如何从dll导入公共成员

时间:2018-03-13 10:24:31

标签: c++ dll

我在dll库中有这个示例c ++类

class Rectangle {
  public:
    int width, height;
    void set_values (int,int);
    int area (void);
} rect;

我用.def文件导出了所有内容 导入dll时我可以访问这两个函数 (set_values(int,int)和area(void)) 但不是公共变量(宽度和高度)

我如何获得对这些变量的访问

2 个答案:

答案 0 :(得分:1)

使用dllexport在dll中导出函数:

extern "C" __declspec(dllexport) bool void set_values (int,int);

您也可以使用dumpbin生成定义文件

dumpbin /EXPORTS tryDLL.dll > tryDLL.def

然后使用lib.exe构建可与您的dll文件一起使用的.lib文件:

lib /def:try.def /out:trydll.lib

正确导出后,您可以将DLL文件复制到应用程序文件夹中,并将目录和lib文件(或使用#pragma)包含在项目中。您导出的类和函数定义应在头文件中声明,该文件仍需要包含在项目中。确保您的成员函数可以像任何其他普通程序一样调用。您可以访问在dll声明中声明的静态成员变量和常量。

答案 1 :(得分:0)

定义文件应被视为已弃用。要导出类,应在“class”关键字后面附加dllimport或dllexport属性。在链接库时,应该针对MSVC生成的静态(.lib)库进行链接,该库可以在与动态库相同的目录中找到

请参阅: https://msdn.microsoft.com/en-us/library/81h27t8c.aspx https://msdn.microsoft.com/en-us/library/3y1sfaz2.aspx