使用OpenSSL进行静态链接

4
我们有一个和这个问题中报告的非常相似的项目,其中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位处理器,如果有区别的话。
编辑1: 在Win32上使用VS2010编译时出现错误。
编辑2: OpenSSL lib(libeay32.lib)也使用nasm为VS2010(Win32)编译。
编辑3: 如果有人能指出一个链接来使用VS2010(vc2010)或VS2008编译器构建OpenSSL,那将非常有帮助(除了指向OpenSSL中的InstallW **文件之外)。
编辑4: 我们还使用Windows DDK 2003,如果有帮助的话。
1个回答

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 可能为 dll、mt、xdll 或 xmt。请注意,我不太确定它们之间的区别)。
将此路径添加到项目的“属性”面板下的“链接器 > 常规 > 附加库目录”中,并将 alloca16.obj 添加到“链接器 > 输入 > 附加依赖项”中可以解决此问题。 解决 __ftol2_sse 链接错误 这个有点棘手。使用 no-sse2 标志配置 OpenSSL 看起来像是解决问题的方法……但至少从版本 1.0.0d 开始就不是这样。我创建了一个新的头文件,其中包含以下内容:
extern "C" { 
   long _ftol( double ); 
   long _ftol2_sse( double dblSource ) { return _ftol( dblSource ); }
}

(如此网站所示)
注:本段为提示内容,无需翻译。

1
该网站(http://software.intel.com/en-us/forums/showthread.php?t=60003)已不再可用... - skyking

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接