类的导出: 在头文件里 class和类名中间添加__declspec(dllexport) 即可导出类,
它内部的原理实际上是导出类的函数,不包括类的变量
而 A __declspec(dllexport) a; 这种语法是导出一个类的变量,这个变量不包括函数
新建空项目 并创建Student.h和Student.cpp文件
Student.h写入:
#pragma once class __declspec(dllexport) Student{ public: void SayHello(); };
Student.cpp写入:
#include <stdio.h> #include "Student.h" void Student::SayHello(){ printf("hello\n"); }
在项目右键>属性>常规>配置类型 选择 动态库(.dll)
然后生成即可
把生成的dll拖到Dependency中查看
可以看到导出的SayHello函数 另一个可能是构造函数吧
新建空项目 并创建demo.cpp
把前面生成的dll文件和lib文件还有Student.h文件复制过来。
头文件新建现有项 引入Student.h文件
demo.cpp写入以下代码:(注意dll文件要放到debug目录里 包装与exe同目录)
#include <stdio.h> #include "Student.h" #pragma comment(lib,"c++导出类.lib") int main(void){ Student stu; stu.SayHello(); getchar(); return 0; }
运行结果:
hello
说明:类的dll只能使用初始化加载的这种方式 无法使用windowAPI动态加载