DLL中使用头文件和导出一个类

在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,即便你花钱看我的文章,也会觉得心满意足


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容