我们的项目与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,如果它可以提供帮助。
答案 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
可能是dll
,mt
,{{ 1}}或xdll
。请注意,我不太确定它们之间有什么区别。)
将此路径添加到项目xmt
面板下的Linker > General > Addtionnal Library Directories
,并将alloca16.obj添加到Properties
解决了问题。
解决__ftol2_sse链接错误
这个有点棘手。使用Linker > Input > Addtional Dependencies
标志配置OpenSSL似乎就像它可以解决问题...但不是版本no-sse2
。我创建了一个新的头文件,其中包含:
1.0.0d
(如this网站所示)