第一步
首先要新建一个dll项目
第二步
1. 添加自己的.h文件(my_class.h)
#pragma once
#ifdef MATHLIBRARY_EXPORTS
#define MATHLIBRARY_API __declspec(dllexport)
#else
#define MATHLIBRARY_API __declspec(dllimport)
#endif
using namespace std;
class MATHLIBRARY_API my_custom_class {
private:
int item;
public:
int sum_func(int item);
string* print_mesg(string* msg);
};
2. 添加自己的.cpp文件(my_class.cpp)
int my_custom_class::sum_func(int item) {
this->item = 4;
return int(this->item + item);
}
string* my_custom_class::print_mesg(string *msg) {
return msg;
}
3. 编辑项目属性
将第5步修改的地方改为你要export
的类型
4. 注意点
- 细心的同学可能已经发现了,我
1.1 返回string
类型用的是指针,这是因为在导出dll
时, 如果C++代码中使用了模板类,但是在封装dll导出的过程中没有导出该模板类的对象类型 ,会出现需要有 dll 接口由客户端使用
的警告。
1.2 类的私有成员item
是在函数中定义,在类中只能用于声明。不然就会报错。
第三步
点击生成解决方案
,可以找到生成的.dll
和.lib
文件,然后:
- 照着这里 这里配置
- 写调用代码:
#include <iostream>
#include"my_class.h"
int main()
{
//std::cout << "Hello World!\n";
my_custom_class a_obj;
int a = a_obj.sum_func(5);
//a_obj.print_mesg("a test!");
cout << a << endl;
string as = "hello yuki";
string* msg = &as;
string* re = a_obj.print_mesg(msg);
cout << *re << endl;
return 0;
}
第4步
编译,运行