c++ - 如何从 dll 导入公共(public)成员

标签 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)) 但不是公共(public)变量(宽度和高度)

我如何访问这些变量

最佳答案

使用 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 声明中声明的静态成员变量和常量。

关于c++ - 如何从 dll 导入公共(public)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49253704/

相关文章:

c++ - FFMPEG发送RTSP编码流C++

c++ - 如何编辑 SFML 源代码以添加新的可绘制对象?

c++ - 指向 int 数组的指针,从另一个方法传递和使用它

C++更改dll中的类,其中指向该类的指针返回给其他dll

dll - DLL 符号 _FooBar@16 中的数字 16 代表什么?

c++ - 为什么升级到Centos 5.5后MAP_GROWSDOWN会出现SIGBUS错误?

c++ - 不一定获取成员值的getter方法?

c++ - 从函数返回 std::vector<Point> 时出现 "Corruption of the heap"错误

c++ - 为什么构建没有预编译头文件的 DLL 在使用时会出现奇怪的错误?

c++ - 构建 Windows dll 的建议