Static library问题: lib可以链接,但是居然找不到函数符号

来源:百度知道 编辑:UC知道 时间:2024/05/14 09:57:20
在另外一个工程中,有一个Static Lib的工程,后来链接成为了MYlib.lib. 我把lib添加到了我自己的project property->link中的相关位置:包括lib的目录和lib名。然后调用了ImageParser::ParseDataLegacyImport::Import()函数,此函数是ParseDataLegacyImport的一个静态成员函数,而且这个类的构造函数是私有,(别人在另外一个工程里面类似的这样使用没有问题,应该不是私有构造函数的问题)。到底为什么编译通过,但是链接通不过呢?
而且我用#pragma comment(lib,“Mylib.lib”)链接都没有问题,但就是说找不到符号

有知道解答一下,谢了

***.obj : error LNK2019: unresolved external symbol "public: static void __cdecl ImageParser::ParseDataLegacyImport::Import(class ImageParser::IParseData *,***)" (?Import@ParseDataLegacyImport@ImageParser@@SAXPAVIParseData@2@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z) referenced in function "private: static bool __cdecl ParseData2BaseDataPackage::TestParseDataTransform(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (?TestParseDataTransform@ParseData2BaseDataPackage@@CA_NABV?$basic_strin

你需要看看你的动态库中究竟有没有导出这些接口.
使用VS6.0的depends可以查看这些信息

// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DLL2_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// DLL2_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#define DLL_EXPORTS

#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif

然后在你需要导出的地方(函数,或者类)前面加上DLL_API