[英]C++: ld incompatibility error when building a wxWidgets project under Msys using c++ libraries that are built with with g++ and -m32 option
I have a C++ project including foreign C++ code (CoolProp). 我有一个包含外国C ++代码(CoolProp)的C ++项目。 This foreign code I have compiled as static library.
我将此外部代码编译为静态库。 Compiler is TDM-GCC Vers 5.1.0 with -m32 option.
编译器是带有-m32选项的TDM-GCC Vers 5.1.0。 I invoke in my C++ code again using TDM-GCC Vers 5.1.0 with -m32 option.
我使用带有-m32选项的TDM-GCC 5.1.0版再次调用了我的C ++代码。 I was able to compile and run a small command line test program.
我能够编译并运行一个小的命令行测试程序。 The whole compiling sequence (Windoes command line prompt or MSYS 1.0):
整个编译过程(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 / 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 / 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 / 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 / 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/include -lm -lcircuit -lfancoil -lformulae -lfluidflow -lCoolProp -m32 && ar rcs build/libcell.a build/cell.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
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
Next I tried to build a GUI program with wxWidgets, Vers 3.0. 接下来,我尝试使用wxWidgets Vers 3.0构建GUI程序。 As far as I didn't invoke my libraries I could compile using msys by g++ fancoil_gui.cpp
wx-config --cxxflags --libs
-o fancoil_gui When I tried to invoke my libraries, for example libformulae.a/formulae.h I uses the -m32 option and compiling always ends up in an error like 就我不调用我的库而言,我可以通过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: skipping incompatible C:/msys/1.0/local/lib/libwxregexu-3.0.a when searching for -lwxregexu-3.0
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
Operating system is 64 bit Windows 7 操作系统是64位Windows 7
How can I do it without creating errors? 我该如何做而不产生错误?
Doesn't look like an error. 看起来不像是一个错误。 You have a 64-bit library on the PATH, but you're asking the linker to find a 32-bit one.
您在PATH上有一个64位库,但是您要让链接程序找到一个32位库。 It's just telling you that it's ignoring the 64-bit one.
只是告诉您它忽略了64位。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.