与OpenSSL的静态链接

时间:2011-07-19 19:40:45

标签: c windows openssl linker

我们的项目与this问题中报告的项目非常相似,其中OpenSSL是lib B的起点。编译可执行文件(Exe 1)时,问题是我们遇到了一些似乎与OpenSSL链接有关的链接问题。

(cryptlib.obj) LNK2019: unresolved external symbol __alloca_probe_16 referenced in function _OPENSSL_isservice
(bss_file.obj) LNK2001: unresolved external symbol __alloca_probe_16 
(b_print.obj)  LNK2019: unresolved external symbol __ftol2_sse referenced in function _roundv

编译库不会给出任何错误。我很想知道这些函数的位置,以便我可以在项目中添加正确的引用。

我在Windows 7上使用64位proc运行,如果这可以有所不同:)

EDIT1
使用VS2010在Win32中进行编译时出现错误。

EDIT2
对于VS2010(对于Win32),OpenSSL库(libeay32.lib)也使用nasm编译。

EDIT3
如果有人可以指出使用VS2010(vc2010)或VS2008编译器构建OpenSSL的链接,那么这也是有帮助的(除了指向OpenSSL中的InstallW **文件)

Edit4
我们也在使用Windows DDK 2003,如果它可以提供帮助。

1 个答案:

答案 0 :(得分:2)

以下是我解决问题的步骤:

解决__alloca_probe_16链接错误

由于我们安装了Visual Studio 2008,因此我们使用了一些obj文件来解决此问题。 alloca16.obj存在于Visual Studio 2008文件夹下的四个不同目录中(类似于C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/crt/src/intel/XXX_lib,其中XXX可能是dllmt,{{ 1}}或xdll。请注意,我不太确定它们之间有什么区别。)

将此路径添加到项目xmt面板下的Linker > General > Addtionnal Library Directories,并将alloca16.obj添加到Properties解决了问题。

解决__ftol2_sse链接错误

这个有点棘手。使用Linker > Input > Addtional Dependencies标志配置OpenSSL似乎就像它可以解决问题...但不是版本no-sse2。我创建了一个新的头文件,其中包含:

1.0.0d

(如this网站所示)