我们真的有一个类似的问题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 那些在Win32中与VS2010编译时有错误。
EDIT2
OpenSSL的LIB(libeay32.lib)也被编译为nasm
VS2010(为Win32)。
EDIT3 如果有人能指出一个链接与VS2010(VC2010)或VS2008编译器来构建OpenSSL的,这也将是有益的(而不是指向InstallW ** OpenSSL中的文件)
Edit4 我们还使用Windows DDK 2003,如果它可以帮助。
下面是我解决问题的步骤:
解决__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
。请注意,我不是很确定就是任何人之间的差异)。
添加此路径项目的Linker > General > Addtionnal Library Directories
面板下的Properties
并添加alloca16.obj到Linker > Input > Addtional Dependencies
解决的问题。
解决__ftol2_sse链接错误
这一个是有点棘手。与no-sse2
标志配置的OpenSSL似乎将解决这个问题......但不是版本1.0.0d
的。我创建了包含此新的头文件:
extern "C" {
long _ftol( double );
long _ftol2_sse( double dblSource ) { return _ftol( dblSource ); }
}
(如图上this网站)