开源时代C语言程序员

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


上一篇下一篇

猜你喜欢

热点阅读