我有一个包含外国 C++ 代码 (CoolProp) 的 C++ 项目。这个外国代码我已经编译为静态库。编译器是带有 -m32 选项的 TDM-GCC Vers 5.1.0。 我再次使用带有 -m32 选项的 TDM-GCC Vers 5.1.0 在我的 C++ 代码中调用。 我能够编译并运行一个小的命令行测试程序。 整个编译过程(Windoes命令行提示符或MSYS 1.0):
- 封装流体
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/formulae.o -I./include src/formulae.cpp -lm -m32 && ar rcs build/libformulae.a build/formulae.o
- 封装风机盘管
g++ -c -o build/fancoil.o -I./include 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 -lcircuit -lfancoil -lformulae -lfluidflow -lCoolProp -m32 && ar rcs build/libcell.a build/cell.o
- 测试程序、流体流和风机盘管包
g++ -o test/test_simple.exe -L./build -LC:/CoolProp/5.1.2/CoolProp/build -I./include test/test_simple.cpp -IC:/CoolProp/5.1.2/CoolProp/include -lm -lcell -lcircuit -lfancoil -lformulae -lfluidflow -lCoolProp -m32 && cd test && test_simple.exe
接下来,我尝试使用 wxWidgets Vers 3.0 构建一个 GUI 程序。至于我没有调用我的库,我可以使用 msys 进行编译
g++ fancoil_gui.cpp wx-config --cxxflags --libs
-o fancoil_gui
当我尝试调用我的库时,例如 libformulae.a/formulae.h 我使用了 -m32 选项并且编译总是以错误结束,如
c:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/1.0/local/lib/libwxregexu-3.0.a when searching for -lwxregexu-3.0
操作系统为 64 位 Windows 7
我怎样才能在不产生错误的情况下做到这一点?
最佳答案
看起来不像是错误。您在 PATH 上有一个 64 位库,但您要求链接器找到一个 32 位库。它只是告诉您它忽略了 64 位的。
关于C++:在 Msys 下使用使用 g++ 和 -m32 选项构建的 c++ 库构建 wxWidgets 项目时出现 ld 不兼容错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35997203/