libMcryptを Windows の静的ライブラリとして使用しようとしています。私のコードは、ここにある dll ポートを既に使用しています。プロジェクトの 'vcproj/solution' が存在しないため、Visual Studio を使用して直接コンパイルする方法がわかりませんでした。(作成してコンパイルしようとすると、大量のエラーが発生していました)
ただし、MingW を使用してクロス コンパイルし、正常に動作する Windows DLL を取得できました。ここで手順を見つけました。次に、構成するオプションとして --enable=static を指定して、静的ライブラリをコンパイルしました。.a および .la ファイルが正常に作成されました。
しかし、コンパイル ライブラリを使用しようとすると、プロジェクトで次のリンカー エラーが発生します。
libmcrypt.lib(loki97.o) : warning LNK4229: invalid directive '/aligncomm:_prm,5' encountered; ignored
libmcrypt.lib(loki97.o) : warning LNK4229: invalid directive '/aligncomm:_sb2,5' encountered; ignored
libmcrypt.lib(loki97.o) : warning LNK4229: invalid directive '/aligncomm:_sb1,5' encountered; ignored
LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in MSVCRT.lib(MSVCR100.dll)
MSVCRT.lib(MSVCR100.dll) : error LNK2005: __strdup already defined in LIBCMT.lib(strdup.obj)
Creating library ..\..\..\bin\myProj.lib and object ..\..\..\bin\myProj.exp
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
libmcrypt.lib(blowfish-compat.o) : error LNK2001: unresolved external symbol ___chkstk_ms
myProj.exp : error LNK2001: unresolved external symbol arcfour_LTX__is_block_algorithm
myProj.exp : error LNK2001: unresolved external symbol arcfour_LTX__mcrypt_algorithm_version
myProj.exp : error LNK2001: unresolved external symbol arcfour_LTX__mcrypt_decrypt
myProj.exp : error LNK2001: unresolved external symbol arcfour_LTX__mcrypt_encrypt
myProj.exp : error LNK2001: unresolved external symbol arcfour_LTX__mcrypt_get_algo_iv_size
myProj.exp : error LNK2001: unresolved external symbol arcfour_LTX__mcrypt_get_algorithms_name
myProj.exp : error LNK2001: unresolved external symbol arcfour_LTX__mcrypt_get_block_size
- 最初の 2 つのエラーから、CRT ミスマッチ エラーだと思います。CRT なしで静的ライブラリをビルドするオプションを gcc に与えるにはどうすればよいですか? (私の考えが正しいかどうかはわかりません)
- または、.a ファイルを使用して obj ファイルを抽出し、そこから lib を再作成できますか?
- WindowsでlibMcryptの静的ライブラリをコンパイルした人はいますか
助けてくれてどうもありがとう!