簡體   English   中英

如何在Windows上使用OpenSSL FIPS靜態庫構建DLL?

[英]How can I build a DLL using the OpenSSL FIPS static library on Windows?

我在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用戶指南中的說明 ,設置了一堆環境變量(FIPS_LINK,FIPS_CC,FIPS_CC_ARGS等),然后調用了fipslink.pl 但我得到了“第一階段鏈接失敗”。

它報告“完整性檢查OK”,然后編譯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構建,或者兩者都沒有,但我每次都會遇到鏈接器錯誤。 我錯過了什么?

打開文件ms\\nt.mak然后通過在末尾添加msvcrt.lib msvcrtd.lib修改第28行,如:

EX_LIBS=ws2_32.lib gdi32.lib advapi32.lib crypt32.lib user32.lib msvcrt.lib msvcrtd.lib

然后從visual studio命令提示符運行: nmake -f ms\\nt.mak 。我希望不會出現任何鏈接器消息。

還嘗試通過nmake -f ms\\ntdll.mak構建DLL

我推測,配置腳本的“-no-shared”切換器靜態鏈接C標准庫。 您將獲得靜態OpenSSL FIPS庫,但它將包括printf和friends的實現,就像您實際體驗的那樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM