将libmcrypt交叉编译为MSVC的静态库

时间:2012-09-14 07:18:52

标签: c++ mingw static-libraries cross-compiling mcrypt

我正在尝试使用libMcrypt作为Windows的静态库。我的代码已经使用了here找到的dll端口。 该项目没有“vcproj / solution”,因此我不知道如何使用visual studio直接编译它。 (当我尝试创建并编译时,我收到了大量错误)

但是,我可以使用MingW交叉编译并获得一个工作正常的Windows DLL。我找到了说明here。然后我编译了一个静态库,为同一个给出--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
  1. 从前两个错误中,我觉得这是一个CRT不匹配错误。怎么能 我给gcc选项来构建没有CRT的静态库? (我不是 确定我的想法是否正确)
  2. 或者我可以使用.a文件,提取obj文件并从中重新创建lib 它?
  3. 是否有人为Windows上的libMcrypt编译静态库
  4. 非常感谢你的帮助!

0 个答案:

没有答案