我对这个错误感到疯狂,所以我认为一些更有经验的开发人员可以在这方面帮助我。我正在尝试编译一个使用 C++ 库(名为 Poco)的示例项目。我的项目链接到已编译的 poco 库。
下面是我的(最简化的)代码:
#include "Poco/UUID.h"
class x
{
void func1()
{
new Poco::UUID(); //A
}
};
void func1()
{
new Poco::UUID(); //B
}
现在,当上面的代码被编译时,'A'行没有错误,但对于'B'行,链接器说: 未定义对'Poco::UUID::UUID()'的引用
是什么原因?当我在类方法中从外部库实例化一个类时,不会发生错误,但函数中的相同代码会产生链接器错误?(当我注释 B 行时,不会发生错误并生成链接器输出文件)
我的配置:Win7/g++/CodeLite/MinGW-4.7.1
*更新2: *谢谢。我的问题现在已经解决,问题是我使用 MSVC 编译器编译了库,而我的应用程序正在使用 g++ 编译(都在 Windows 平台下)。所以我使用 g++ 重新编译了库,现在一切正常。
更新 1:这是我构建项目时 IDE 的输出:
C:\Windows\system32\cmd.exe /c "mingw32-make.exe -j 4 -e -f "dll1.mk" all"
----------Building project:[ dll1 - Debug ]----------
g++ -shared -fPIC -o ./Debug/dll1.so @"dll1.txt" -L. -Lc:/poco/lib -lPocoFoundationd
./Debug/PluginLibrary.o: In function `Z5func1v':
C:/Users/PARS/Documents/codelite/workspace1/dll1/PluginLibrary.cpp:12: undefined reference to `Poco::UUID::UUID()'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe: *** [Debug/dll1.so] Error 1
dll1.mk:77: recipe for target `Debug/dll1.so' failed
1 errors, 0 warnings