C++;:使用c+;在Msys下构建wxWidgets项目时发生ld不兼容错误+;使用g++;和-m32选项 我有一个C++项目,包括国外C++代码(CuroProp)。这是我编译成静态库的外来代码。编译器是TDM-GCC版本5.1.0,带有-m32选项。 在我的C++代码中,再次使用TD-GCC VS 5.1.0和-M32选项调用。 我能够编译并运行一个小的命令行测试程序。 整个编译顺序(Windoes命令行提示符或MSYS 1.0): 包流

C++;:使用c+;在Msys下构建wxWidgets项目时发生ld不兼容错误+;使用g++;和-m32选项 我有一个C++项目,包括国外C++代码(CuroProp)。这是我编译成静态库的外来代码。编译器是TDM-GCC版本5.1.0,带有-m32选项。 在我的C++代码中,再次使用TD-GCC VS 5.1.0和-M32选项调用。 我能够编译并运行一个小的命令行测试程序。 整个编译顺序(Windoes命令行提示符或MSYS 1.0): 包流,c++,g++,wxwidgets,msys,tdm-gcc,C++,G++,Wxwidgets,Msys,Tdm Gcc,g++-c-o build/fluidflow.o-LC:/CoolProp/5.1.2/CoolProp/build -I./include-IC:/CoolProp/5.1.2/CoolProp/include src/fluidflow.cpp-lCoolProp-m32和&ar rcs build/libfluidflow.a build/fluidflow.o 包装配方 g++-c-o build/formulas.o-I./include src/formulas.cpp-lm-m3

g++-c-o build/fluidflow.o-LC:/CoolProp/5.1.2/CoolProp/build -I./include-IC:/CoolProp/5.1.2/CoolProp/include src/fluidflow.cpp-lCoolProp-m32和&ar rcs build/libfluidflow.a build/fluidflow.o

  • 包装配方
  • g++-c-o build/formulas.o-I./include src/formulas.cpp-lm-m32&&ar rcs build/libformals.a build/formals.o

  • 包装风扇油
  • g++-c-o构建/fancoil.o-I./包括src/fancoil.cpp-lm-m32和&ar rcs build/libfancoil.a build/fancoil.o

  • 封装电路
  • g++-c-o build/circuit.o-L./build-LC:/CoolProp/5.1.2/CoolProp/build -I./include src/circuit.cpp-IC:/CoolProp/5.1.2/CoolProp/include-lm-lfancoil-lformulae-lfluidflow-lCoolProp-m32和&ar rcs build/libcircuit.a build/circuit.o

  • 封装单元
  • g++-c-o build/cell.o-L./build-LC:/CoolProp/5.1.2/CoolProp/build -I./include src/cell.cpp-IC:/CoolProp/5.1.2/CoolProp/include-lm-lcircit-lfancoil-lformulae-lfluidflow-lcolprop-m32和&ar rcs build/libcell.a build/cell.o

  • fluidflow&fancoil测试程序包
  • g++-o测试/test_simple.exe-L./build -LC:/CoolProp/5.1.2/CoolProp/build-I./include test/test\u simple.cpp-IC:/CoolProp/5.1.2/CoolProp/include-lm-lcell-lciruit-lfancoil-lformulae-lfluidflow-lcolprop-m32&&cd test&test\u simple.exe

    接下来,我尝试用wxWidgets、Vers3.0构建一个GUI程序。只要我没有调用我的库,我就可以使用msys进行编译 g++fancoil_gui.cpp
    wx配置--cxflags--libs
    -o fancoil_gui 当我试图调用我的库时,例如libformals.a/formulas.h,我使用了-m32选项,编译总是以如下错误结束

    c:/TDM-GCC-64/bin/。/lib/GCC/x86_64-w64-mingw32/5.1.0/。/../../../../../../x86_64-w64-mingw32/bin/ld.exe: 在以下情况下跳过不兼容的C:/msys/1.0/local/lib/libwxregexu-3.0.a 正在搜索-lwxregexu-3.0

    操作系统是64位Windows 7


    我如何做到不产生错误

    看起来不像是一个错误。路径上有一个64位库,但要求链接器查找一个32位库。它只是告诉您它忽略了64位的一个。

    看起来不像是一个错误。路径上有一个64位库,但要求链接器查找一个32位库。它只是告诉您它忽略了64位的消息。

    msys中其余的g++消息是“collect2.exe:error:ld returned 1 exit status”-实际上是一个ld/collect错误。而且还没有生成任何可执行文件。一个可能的问题是:libwxregexu-3.0.a和其他库显然是msys中的64位。有32位版本可用吗?或者我还可以如何解决我第一篇文章中描述的问题?@Robert:是的,如果你想构建一个32位的应用程序,你需要所有库的32位版本。msys中的其他g++消息是“collect2.exe:error:ld returned 1 exit status”-实际上是一个ld/collect错误。而且还没有生成任何可执行文件。一个可能的问题是:libwxregexu-3.0.a和其他库显然是msys中的64位。有32位版本可用吗?或者我如何才能解决我在第一篇文章中描述的问题?@Robert:是的,如果你想构建一个32位的应用程序,你需要所有库的32位版本。