我正在使用从sf下载的i686-w64-mingw32来编译POCO库。编译库并创建libPoco * .a文件(带有一些警告)。 现在,当我想使用这些文件时(例如,在一个将字符串转换为整数的小型示例项目中),链接器抛出错误说: ./ Debug / main.o:main.cpp :(。text + 0xab):undefined引用“ imp __ ZN4Poco12NumberParser5parseERKSs'
奇怪的是,如果我使用TDM-MinGW-4.7.1对双方(lib和测试应用程序)进行编译,一切都很好!
我尝试设置" -march = i386; -m32"在两个编辑但没有运气。当我尝试构建测试应用程序时,这是链接器的日志:
g++ -o ./Debug/testpoco @"testpoco.txt" -L. -Lc:/poco/lib/ -lPocoFoundationmtd -v
Using built-in specs.
COLLECT_GCC=g++
...
Target: i686-w64-mingw32
...
Thread model: win32
gcc version 4.8.1 (rev5, Built by MinGW-W64 project)
...
COLLECT_GCC_OPTIONS='-o' './Debug/testpoco.exe' '-L.' '-Lc:/poco/lib/' '-v' '-shared-libgcc' '-mtune=generic' '-march=i686'
...
./Debug/main.o:main.cpp:(.text+0xab): undefined reference to `_imp___ZN4Poco12NumberParser5parseERKSs'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[1]: *** [Debug/testpoco] Error 1
testpoco.mk:77: recipe for target 'Debug/testpoco' failed
答案 0 :(得分:1)
通常只有在没有正确链接您的库时才会抛出这样的错误。你确定libPocoFoundationmtd.a包含这个功能吗?如果这样做,编译这些库时会显示哪些警告。检查这些
确保定义了所有必需的预处理器符号! (-D)例如:POCO_STATIC