简体   繁体   English

C ++:在Msys下使用通过g ++和-m32选项构建的c ++库在wsys下构建wxWidgets项目时,ld不兼容错误

[英]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):

  1. Package fluidflow 包装液流量

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

  1. Package formulae 包装配方

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

  1. Package fancoil 包装风机盘管

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

  1. Package circuit 封装电路

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

  1. Package cell 包装单元

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

  1. Test program, packages fluidflow & fancoil 测试程序,包装流体流量和风机盘管

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM