静态链接使用OpenSSL

问题描述 投票:4回答:1

我们真的有一个类似的问题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,如果它可以帮助。

c windows openssl linker
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可能dllmtxdllxmt。请注意,我不是很确定就是任何人之间的差异)。

添加此路径项目的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网站)

© www.soinside.com 2019 - 2024. All rights reserved.