在dll中使用类

时间:2012-11-10 12:26:10

标签: c++ visual-studio class dll export

我在dll中有一个类,我想在另一个项目中使用它。我读了this tutorial关于如何做到这一点,我的伪代码看起来像这样

interface.h

#ifdef  EXPORT
#define SOMEAPI __declspec(dllexport)
#else
#define SOMEAPI __declspec(dllimport)
#endif

struct ISomeInterface
{
  virtual void SomeMethod()=0;
};

typedef ISomeInterface* SOMEHANDLE;

#define EXTERN_C     extern "C"

EXTERN_C SOMEAPI SOMEHANDLE WINAPI CreateSomething(VOID);

然后我SomeDLL.dll实施了ISomeInterfaceCreateSomething 当我尝试在我的客户端使用它时,我得到链接器错误。客户看起来像这样:
Client.cpp

#include "interface.h"
SOMEHANDLE h = ::CreateSomething();  // Linker error here: Unresolved external  

我可以通过添加dll项目作为VC ++中Client项目的依赖项来解决这个问题。一切都很好。
问题是,如果我想使用这个标准的dll(现在就是这种情况)?如何消除链接器错误呢?

1 个答案:

答案 0 :(得分:0)

  

我可以通过添加dll项目作为客户端项目

的依赖项来解决这个问题

是的,这会自动完成手动独立项目中的一件事。项目+属性,链接器,输入,附加依赖项设置。添加DLL项目生成的.lib文件。导入库,它告诉链接器有关DLL导出的函数。