【发布时间】:2014-12-10 20:14:37
【问题描述】:
我在 openssl-users 邮件列表上问过这个问题,但没有任何回复,所以我想我会在这里尝试。
我正在尝试构建一个包含静态 OpenSSL FIPS 库的 Windows DLL。我使用perl Configure fips --with-fipslibdir=... -no-shared 和nmake -f ms\nt.mak 构建了FIPS 库。我正在使用 openssl-fips-2.0.5、openssl-1.0.1j 和 MS Visual Studio 2010。
现在我正在尝试将生成的库链接到我的 DLL 中。我按照OpenSSL FIPS 2.0 User's Guide 中的说明设置了一堆环境变量(FIPS_LINK、FIPS_CC、FIPS_CC_ARGS 等),然后调用了fipslink.pl。但我遇到了“第一阶段链接失败”。
它报告“完整性检查正常”,然后编译 fips_premain.c,但是在链接 DLL 时,我收到一堆“本地定义的符号 _time64 导入”警告(以及 strncmp、_errno、abort、fprintf 等) ,然后是一些未解析的外部符号,包括:
__imp_strncpy
__imp_qsort
__imp_wcsstr
__imp_vsnwprintf
所有错误都来自 libeayfips32.lib、libeaycompat32.lib 和 ssleay32.lib。
我尝试过添加和删除/NODEFAULTLIB:msvcrt 和/NODEFAULTLIB:libcmtd 之类的内容,以及使用/MT 或/MD 或两者都不进行构建,但我每次都遇到链接器错误。我错过了什么?
【问题讨论】:
标签: windows visual-studio-2010 linker openssl fips