gpt4 book ai didi

c - 与 OpenSSL 的静态链接

转载 作者:可可西里 更新时间:2023-11-01 14:19:40 29 4
gpt4 key购买 nike

我们有一个与 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,如果这有什么不同的话:)

编辑1
这些是使用 VS2010 在 Win32 中编译时的错误。

编辑2
OpenSSL 库 (libeay32.lib) 也使用 nasm 编译用于 VS2010(用于 Win32)。

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

编辑4
我们还在使用 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 可能是 dllmtxdllxmt 。请注意,我不太确定它们之间有什么区别)。

将此路径添加到项目Properties 面板下的Linker > General > Addtionnal Library Directories 并将alloca16.obj 添加到Linker > Input >附加依赖项 解决了这个问题。

解决 __ftol2_sse 链接错误

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

extern "C" { 
long _ftol( double );
long _ftol2_sse( double dblSource ) { return _ftol( dblSource ); }
}

(如 this 网站所示)

关于c - 与 OpenSSL 的静态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6753111/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com