我有一个包含外国 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/包括 -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/包括 -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 程序。至于我没有调用我的库,我可以使用 g++ fancoil_gui.cpp wx-config --cxxflags --libs
-o fancoil_gui 使用 msys 编译当我尝试调用我的库时,例如 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:在搜索 -lwxregexu-3.0 时跳过不兼容的 C:/msys/1.0/local/lib/libwxregexu-3.0.a
操作系统为 64 位 Windows 7
如何在不产生错误的情况下做到这一点?