2011-02-20 39 views
0

我在解释DLL中的类时遇到了问题,方法与解释here 相同。我有我的接口与所有声明为虚拟的方法,我有我的类实现接口,我有方法,应该创建类的对象。问题在这里,当我尝试使用它时,我得到一个“未引用的外部符号”错误。为什么?DLL函数调用期间未引用的外部符号

class IXYZ 
{ 
    virtual void XXX() = 0; 
}; 

class XYZ : public IXYZ 
{ 
    void XXX(); 
} 

#ifdef __cplusplus 
    extern "C" __declspec(dllexport) IXYZ* __stdcall GetIXYZ(); 
#endif 

和我用它我的win32程序中:

IXYZ *myvar = GetIXYZ(); 

在我的exe程序我已经包含了DLL

+0

您是否改变了declspec来为应用程序导入dllimport? –

+0

构建应用程序时,您链接了DLL的lib文件吗? –

+0

@PiorLegnica是的,我使用标准的视觉工作室宏导出东西 – Stefano

回答

1

的.h文件如果你已经正确定义函数在DLL中,并且它被正确导出,那么唯一合理的解释是在使用DLL的应用程序中使用.lib文件时出现问题。

+0

好吧,如果我链接它的lib文件的作品,但我不知道为什么我的一个lib文件它说它找不到它。 Mistery – Stefano

+0

您可以使用dumpbin检查.lib文件 –

+0

我解决了这个问题,我将lib目录设置为创建.lib文件的调试目录,但是当我编译这些文件时,它们会被删除并重新创建,因此会导致该错误。现在的问题是:我应该使用哪个目录来保存最新的lib文件? – Stefano

相关问题