将静态库链接到DLL

时间:2010-02-15 13:45:19

标签: c++ visual-studio

我正在使用Visual Studio 5.0 我有DLL和静态库。我的目的是使用静态库中定义的静态函数。我已将头文件包含在预期的源cpp中,并且还给出了项目依赖项中的路径。它仍然给我链接器错误。

以下是链接器错误

  

错误LNK2019:未解析的外部符号“public:static bool __cdecl gph :: IsA(class PtOnDemand&,wchar_t const *)”(?IsA @ gph @@ SA_NAAVPtOnDemand @@ PB_W @ Z)在函数“private”中引用: int __thiscall PtXMLP :: HandleObjectBegin(char const *,char const * *)“(?HandleObjectBegin @ PtXMLP @@ AAEHPBDPAPBD @ Z)   1>。\ ReleaseU / epptxml.dll:致命错误LNK1120:1个未解析的外部

任何建议

4 个答案:

答案 0 :(得分:3)

链接器可能找不到您的功能,因为它是使用不同的设置编译的。像发布与调试,unicode与非unicode,调用约定的差异。这可能会导致名称被不同地修改。如果.h文件是用c而不是c ++编写的,你可能需要通过将原型包装在

中来完全禁用名称修改。
  extern "C" 
   {
     // function prototypes go here.
   }

答案 1 :(得分:2)

您还必须将lib文件包含在项目中才能将其链接到。请注意确定VS5但在6上这是在Project / Add to Project / Files下。或者,您可以将其包含在项目属性中的链接器选项下。

答案 2 :(得分:1)

好吧,我并不完全了解Visual Studio 5.但您必须将要静态链接的库添加为项目的附加依赖项。

答案 3 :(得分:0)

首先,是时候获得Visual Studio的新版本了:-) 但是,您可能正在将其用于传统支持。

无论如何,只包含头文件是不够的。您还需要确保告诉链接器静态库文件的位置(可能是.a文件)以及库的名称。