2009-11-06 140 views
0

当我建立我的项目编译好,但是当链接它会引发大量的LNK错误!错误LNK2001,错误LNK2005,错误LNK2019在错误列表中出现C++ visual studio 2008链接问题

>Linking... 
1>MultiCatAttributeInfo.obj : error LNK2019: unresolved external symbol "public: class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > __thiscall MultiCatItem::value(void)const " ([email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@XZ) referenced in function "public: virtual class boost::dynamic_bitset<unsigned long,class std::allocator<unsigned long> > __thiscall MultiCatAttributeInfo::encode(class Item *)" ([email protected]@@[email protected][email protected]@[email protected]@@[email protected]@[email protected]@@Z) 

我该如何克服这个问题?即时通讯使用Visual Studio 2008,我的解决方案有几个项目;所有链接错误,如上所示!

回答

0

好吧,它看起来像你没有链接一些文件。你检查,以确保你实际上编译所有的源文件?

没有任何代码就很难说任何具体的东西。

0

错误说,你还没有实现或链接功能MultiCatItem::value,在功能MultiCatAttributeInfo::encode引用。检查你是否在项目中包含了合适的cpp文件和MultiCatItem实施。

0

链接器试图找到一个MultiCatItem::value功能,它会在任何一个OBJ文件找到一个实现(即编译的cpp文件)或编译的库(即的.lib文件中,连接属性指定的输入部分)。

链接器是可以理解的相当迂腐,所以如果你链接到一个编译的lib,确保编译的库是用相同的设置编译的,例如,你编译的lib不是用Unicode设置编译的,这意味着对于该方法的签名会使用charwchar_t改变。

如果您使用的编译库使用该工具dumpbin从.LIB,例如倾倒了所有的导出函数/类等。

dumpbin.exe /all somelibrary.lib > out.txt 

并检查问题链接引用的签名在Visual Studio要查找的.lib中是否相同。

1

如果您使用的是DLL,可能是因为您没有通过设置__declspec(dllexport)(以及在导入其他项目中的头文件时选择__declspec(dllimport))来正确导出类。然后链接器无法看到函数/类。