我在这个类中遇到了一个奇怪的未解决的外部符号错误。我有一个基于Qt的C ++库,其中LIBDATASHARED_EXPORT
是__declspec(dllexport)
或__declspec(dllimport)
的别名。
class LIBDATASHARED_EXPORT SaveFile
{
class Index
{
public:
operator bool() const; //<--- defined in cpp
};
public:
template<typename T> load()
{
Index idx;
if(idx) //<--- complains about unresolved symbol...
{
}
}
};
当我在另一个与库链接的项目中使用它时,在实例化模板方法时,我得到unresolved external symbol
SaveFile::Index::operator bool() const
。当我在标题中放置SaveFile::Index::operator bool() const
的定义时,它可以正常工作。 SaveFile::Index::operator bool() const
的定义确实与该类定义的其余部分位于同一.cpp文件中,因此应在实例化时定义。
这里有什么问题,如何解决?
答案 0 :(得分:0)
问题是必须导出内部类,所以在这种情况下解决方案是将LIBDATASHARED_EXPORT
添加到内部类,因为它不是由外部类导出的(它本身是导出的) 。使用Dependency Walker找到。