问题描述
我正在使用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 (将#修改为@)