Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将静态库链接到DLL_C++_Visual Studio - Fatal编程技术网

C++ 将静态库链接到DLL

C++ 将静态库链接到DLL,c++,visual-studio,C++,Visual Studio,我正在使用Visual Studio 5.0 我有DLL和一个静态库。我的意图是使用静态库中定义的静态函数。我已经在预期的源cpp中包含了头文件,并且在项目依赖项中给出了路径。它仍然会给我链接器错误 以下是链接器错误 错误LNK2019:未解析的外部符号“public:static bool\uu cdecl gph::IsA(类PtOnDemand&,wchar\t const*)”(?IsA@gph@@SA_NAAVPtOnDemand@@PB_W@Z)在函数“private:int u t

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

以下是链接器错误

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


任何建议

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


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

嗯,我不太清楚Visual Studio 5。但是,您必须添加要作为附加依赖项静态链接到项目的库。

您还必须将库文件包括到项目中,以便链接到项目中。请注意,VS5是肯定的,但在VS6上,它位于Project/Add to Project/Files下。或者,您可以将其包含在项目属性的链接器选项下。

可能是链接器找不到您的函数,因为它是使用不同的设置编译的。就像发行版和调试版,unicode和非unicode,调用约定的差异。这可能会导致名称以不同的方式损坏。如果.h文件是用C编写的,而不是C++,则可能需要通过在

中封装原型来禁用名称的全部修改。
  extern "C" 
   {
     // function prototypes go here.
   }

您可能应该向我们显示makefile/project文件和链接器错误。对于更新visual studio版本的所有答案,+1。。。老天爷,5.0是古老的。+1:根据Sameer对其他答案的评论,几乎可以肯定是这样。+1,如上所述,考虑到所讨论的函数采用wchar_t表示unicode。此外,IsA听起来像是MFC中常见的一种类型函数(例如RTTI替换),我正在win32应用程序中使用cpprestsdk。它一直在寻找库的dll(cpprestsdk)。这个解决方案对我根本不起作用:(@Sameer,听起来你应该研究一下jdv的答案。看看添加MBCS和UNICODE作为预处理器定义的效果