【发布时间】:2012-03-28 20:47:46
【问题描述】:
我在尝试链接时看到以下错误消息 一个项目中的库与同一解决方案中的另一个库:
CPTemplate.obj : error LNK2019: unresolved external symbol "public: long __thiscall MPADOFieldList::GetField(wchar_t *,struct Field * *)" (?GetField@MPADOFieldList@@QAEJPA_WPAPAUField@@@Z) referenced in function "public: virtual long __stdcall CCPTemplate::GetRootStorage(struct IMPRootStore * *)" (?GetRootStorage@CCPTemplate@@UAGJPAPAUIMPRootStore@@@Z)
在我要链接的静态库上使用“dumpbin /symbols” 反对为“GetField”方法揭示了一个不同的符号:
?GetField@MPADOFieldList@@QAEJPA_WPAPAUADOField@@@Z (public: long __thiscall MPADOFieldList::GetField(wchar_t *,struct ADOField * *))
显然,区别在于“Field”与“ADOField”。 “字段”已定义 在引用的标题中:
typedef interface ADOField Field;
'GetField'方法的声明如下:
HRESULT GetField( BSTR bstrFieldName, Field** rpField );
【问题讨论】:
-
库是否使用与二进制文件相同的编译器并使用相同的设置进行编译(尤其是考虑到由于 BSTR 参数而在此处处理字符串)?
-
相同的编译器,相同的机器,据我所知(来自 Visual Studio 对 cl.exe 的调用),相同的设置。
标签: c++ visual-studio-2008 visual-c++ linker-errors symbols