在 Windows 中编译 OpenSSL - 生成的 LIB 使用错误的 DLL 文件名称
Compiling OpenSSL in Windows - generated LIB uses wrong name for DLL files
我正在尝试在本地编译 OpenSSL 1.1.1d 版本。
由于我的项目,我需要编辑配置文件夹下的windows-makefile.tmp。
我必须像这样添加文件扩展名:
our $objext = $target{obj_extension} || "_vc10.obj";
our $resext = $target{res_extension} || "_vc10.res";
our $depext = $target{dep_extension} || "_vc10.d";
our $exeext = $target{exe_extension} || "_vc10.exe";
our $libext = $target{lib_extension} || "_vc10.lib";
our $shlibext = $target{shared_extension} || "_vc10.dll";
编译成功,没有问题。
但是每当我的程序使用 libcrypto 时我都会出错。
检查生成的 libcrypto-1_1_vc10.lib,我发现该库使用 .dll 和名称
libcrypto-1_1.dll
而不是前置的
libcrypto-1_1_vc10.dll
我预计会使用后者,因为这将是生成的 .dll 文件。
我还尝试在前面加上以下文件扩展名,但效果不大。
our $shlibextimport = $target{shared_import_extension} || ".lib";
our $dsoext = $target{dso_extension} || ".dll";
我浏览了生成的 Makefile,但我没有看到太多只会生成 libcrypto-1_1.dll(或者我可能还不熟悉如何生成生成文件有效)。
由于我的项目,我需要在文件名中保留 _vc10。
是否还有 windows-makefile.tmp 的其他部分或我需要编辑的其他配置?
任何线索都是有益的。提前谢谢你。
经过一番调查,感谢同事们的指点,我得以解决这个问题。
这可能是解决此问题的一种 hackish 方法,但这就是我解决问题的方法。
在
util/mkdef.pl
有一个函数
sub print_def_file
{
...
my $libname = $name;
...
将 $libname 值更新为 libcrypto.lib 或 libssl.lib
引用的所需库名
例如:
my $libname = $name . "_vc10";
PS:如果有其他方法可以解决这个问题,请告诉我。
我正在尝试在本地编译 OpenSSL 1.1.1d 版本。
由于我的项目,我需要编辑配置文件夹下的windows-makefile.tmp。 我必须像这样添加文件扩展名:
our $objext = $target{obj_extension} || "_vc10.obj";
our $resext = $target{res_extension} || "_vc10.res";
our $depext = $target{dep_extension} || "_vc10.d";
our $exeext = $target{exe_extension} || "_vc10.exe";
our $libext = $target{lib_extension} || "_vc10.lib";
our $shlibext = $target{shared_extension} || "_vc10.dll";
编译成功,没有问题。 但是每当我的程序使用 libcrypto 时我都会出错。 检查生成的 libcrypto-1_1_vc10.lib,我发现该库使用 .dll 和名称
libcrypto-1_1.dll
而不是前置的
libcrypto-1_1_vc10.dll
我预计会使用后者,因为这将是生成的 .dll 文件。 我还尝试在前面加上以下文件扩展名,但效果不大。
our $shlibextimport = $target{shared_import_extension} || ".lib";
our $dsoext = $target{dso_extension} || ".dll";
我浏览了生成的 Makefile,但我没有看到太多只会生成 libcrypto-1_1.dll(或者我可能还不熟悉如何生成生成文件有效)。
由于我的项目,我需要在文件名中保留 _vc10。
是否还有 windows-makefile.tmp 的其他部分或我需要编辑的其他配置? 任何线索都是有益的。提前谢谢你。
经过一番调查,感谢同事们的指点,我得以解决这个问题。
这可能是解决此问题的一种 hackish 方法,但这就是我解决问题的方法。
在
util/mkdef.pl
有一个函数
sub print_def_file
{
...
my $libname = $name;
...
将 $libname 值更新为 libcrypto.lib 或 libssl.lib
引用的所需库名例如:
my $libname = $name . "_vc10";
PS:如果有其他方法可以解决这个问题,请告诉我。