如何从 dll 导入公共成员

How can you import a public member from dll

本文关键字:成员 导入 dll      更新时间:2023-10-16

我在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((但不是公共变量(宽度和高度(

我如何访问这些变量

使用 dllexport 将函数导出到 dll 中:

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

您还可以使用转储箱生成定义文件

dumpbin /EXPORTS tryDLL.dll > tryDLL.def

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

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

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

定义文件应被视为已弃用。为了导出类,您应该在"class"关键字之后附加dllimport或dllexport属性。在针对库进行链接时,应针对 MSVC 生成的静态 (.lib( 库执行此操作,该库可在与动态库位于同一目录中

看:https://msdn.microsoft.com/en-us/library/81h27t8c.aspxhttps://msdn.microsoft.com/en-us/library/3y1sfaz2.aspx