2010-02-15 254 views
3

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

以下是链接错误

错误LNK2019:无法解析的外部符号 “公用:静态布尔__cdecl GPH :: ISA(类PtOnDemand &,wchar_t的常量*)”(ISA @ GPH @@ SA_NAAVPtOnDemand @? @ HandleObjectBegin @ PtXMLP @@ AAEHPBDPAPBD @ Z) 1>。\ ReleaseU/epptxml.dll:@ PB_W @ Z)在函数“private:int __thiscall PtXMLP :: HandleObjectBegin(char const *,char const * *)致命错误LNK1120:1个未解析的外部设备

任何建议

+2

禁用名称通过包装原型完全重整你应该向我们展示生成文件/项目文件和链接器错误。和所有的答案更新您的视觉工作室版本+1 ...良好的主,5.0是古老的。 – Tim

回答

3

可能是因为链接器使用不同的设置进行编译,链接器没有找到您的功能。像释放vs调试,unicode与非unicode,调用约定的差异。这可能会导致名称被改变。如果.h文件是用C语言编写,而不是C++,你可能需要在

extern "C" 
    { 
    // function prototypes go here. 
    } 
+1

+1:基于Sameer对其他答案的评论,这几乎可以肯定是这种情况。 –

+0

+1,如上所述,鉴于有问题的函数需要wchar_t指示unicode。此外,IsA听起来像MFC中常见的IsKindOf类型函数(例如RTTI替代品) –

+0

我在我的win32应用程序中使用cpprestsdk。它一直在寻找图书馆的dll(cpprestsdk)。这个解决方案根本不适用于我:( – Marss

0

首先,它的时间来获得新版本的Visual Studio :-) 但它可能是您使用它的遗留支持。

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

+0

@fuzz我已经这么做了 –

1

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

+0

@simon我已经这样做了 –

2

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

+0

@shane我已经完成了 –

+0

@Sameer,听起来你应该调查jdv的答案。看看添加_MBCS和UNICODE作为预处理器定义的效果 –