如何在CMake中使用GNUtoMS使.lib导入库成为32位?

问题描述

我正在使用CMake编译包含混合C和Fortran代码的dll。我使用MinGW编译器编译dll,然后使用CMake中的GNUtoMS功能使dll与Visual Studio编译器兼容。这对于编译64位库效果很好,但是在为32位系统编译时却遇到了问题。

我正在使用-m32标志来编译32位代码。我已将CMAKE_GNUtoMS_VCVARS设置为使用vcvars32.bat,并将CMAKE_SYstem_PROCESSOR设置为x86。当我生成库时,命令行输出包括[vcvarsall.bat] Environment initialized for: 'x86'

但是,当我使用dumpbin /headers来调查库时,Visual Studio的.lib导入库具有8664 machine (x64)头,而dll和MinGW导入库(.dll.a)具有{{1 }}标头。我不知道如何解决这个问题。

当我打开14C machine (x86)32 bit word machine文件时,可以看到它仍然设置为CMakeGNUtoMS_lib.bat,这一定是引起问题的原因。我该如何更改?仅将文件编辑为lib /machine:"amd64" %*并不能解决此问题,因为我认为它已经以lib /machine:"amd32" %*的形式存储在缓存中,并且重新配置该构建会将其还原回amd64。>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)