如何解决.lib文件中方法的差异?

时间:2013-07-31 20:00:43

标签: c++ visual-studio-2008 windows-ce linker-errors

我正在尝试使用第三方库来处理我的代码。我有库的源代码,并且已经验证了构建选项与我自己的构建选项匹配,但是我没有通过所有源代码来了解它正在做什么。

我的代码调用行Value m_jsonValRoot;,它给出了以下链接错误:

Linking...
1>JsonWrapper.obj : error LNK2019: unresolved external symbol "public: __cdecl Json::Value::~Value(void)" (??1Value@Json@@QAA@XZ) referenced in function "public: class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsOS<wchar_t> > > __cdecl Json::CJsonWrapper::RunTest(class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsOS<wchar_t> > >)" (?RunTest@CJsonWrapper@Json@@QAA?AV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsOS@_W@ATL@@@@@ATL@@V34@@Z)
1>JsonWrapper.obj : error LNK2019: unresolved external symbol "public: __cdecl Json::Value::Value(int)" (??0Value@Json@@QAA@H@Z) referenced in function "public: class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsOS<wchar_t> > > __cdecl Json::CJsonWrapper::RunTest(class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsOS<wchar_t> > >)" (?RunTest@CJsonWrapper@Json@@QAA?AV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsOS@_W@ATL@@@@@ATL@@V34@@Z)
1>Windows Mobile 6.5.3 Standard DTK (ARMV4I)\Debug\CCRDEX_UI.exe : fatal error LNK1120: 2 unresolved externals

我在.lib文件上运行了dumpbin,我发现我的函数被定义为:

SECTION HEADER #C7
   .text name
       0 physical address
       0 virtual address
     194 size of raw data
   22345 file pointer to raw data (00022345 to 000224D8)
   224D9 file pointer to relocation table
       0 file pointer to line numbers
      12 number of relocations
       0 number of line numbers
60501020 flags
         Code
         COMDAT; sym= "public: __thiscall Json::Value::Value(enum Json::ValueType)" (??0Value@Json@@QAE@W4ValueType@1@@Z)
         16 byte align
         Execute Read

我尝试通过将headder文件中的方法声明从:Value( ValueType type = nullValue );更改为__thiscall Value( ValueType type = nullValue );来解决此问题,但这对链接器没有影响。

我正在使用unicode在共享DLL中使用MFC在Visual Studio 2008中构建项目,并且正在为Windows Mobile 6.5.3构建

我可以采取哪些措施来解决链接问题?

1 个答案:

答案 0 :(得分:1)

在构建lib文件时,我做了一些健忘的事情。

当我需要为移动设备构建它时,我意外地为Win32构建它。