DLL中使用头文件和导出一个类
2017-09-27 本文已影响72人
NiceBlueChai
在DLL项目中。添加mydll.h/ mydll.cpp
- 原则,
在DLL文件中,将函数声明为 _declspec(dllexport)
在CPP文件中,将函数声明为 _declspec(dllimport)
实现方法
使用条件编译指令
mydll.h中输入以下代码
#ifndef MYDLL_H
#define MYDLL_H
#ifdef MYDLL_EXPORTS
#define MYDLL _declspec(dllexport)
#else
#define MYDLL _declspec(dllimport)
#endif
MYDLL int Add(int a, int b);
#endif // MYDLL_H
mydll.cpp中输入以下代码:
#include <stdio.h>
#define MYDLL_EXPORTS
#include "mydll.h"
int Add(int a, int b) {
return a + b;
}
编译成功后可用动态库的简单使用及DLL的部署中的方法使用
使用方法2:vs2017工作环境下
用户SDK将这些包含到“系统目录”中(配置vc++环境变量)
PATH再将dll文件按照动态库的简单使用及DLL的部署中的方法部署
新建一个空项目,可以像使用标注库一样用尖括号<>使用你的动态库了
在新项目CPP中输入:
#include<stdio.h>
#include <mydll.h>
#pragma comment(lib,"Project1.lib")
int main() {
int a = Add(12, 5);
printf("%d", a);
getchar();
return 0;
}
编译,运行成功
导出类的定义,其实就是导出类的成员函数
MyObject.h
#pragma once
#ifdef MYDLL_EXPORTS
#define MYDLL _declspec(dllexport)
#else
#define MYDLL _declspec(dllimport)
#endif // MYDLL_EXPORTS
class MYDLL MyObject
{
public:
MyObject(int v);
void print();
private:
int value;
};
MyObject.cpp
// MyObject.cpp: 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
#include <stdio.h>
#define MYDLL_EXPORTS
#include "MyObject.h"
MyObject::MyObject(int v):value(v){}
void MyObject::print() {
printf("%d....\n", value);
}
使用方法仍然是一样的
❤️我的目标是:someday,即便你花钱看我的文章,也会觉得心满意足