c++类的DLL导出与使用


类的导出

类的导出: 在头文件里 class类名中间添加__declspec(dllexport) 即可导出类,

它内部的原理实际上是导出类的函数,不包括类的变量

而 A __declspec(dllexport) a;  这种语法是导出一个类的变量,这个变量不包括函数

新建空项目 并创建Student.hStudent.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中查看

image.png

可以看到导出的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动态加载