visual studio创建和链接dll - 隐式链接

环境:visual studio 2019

本篇主要描述怎么创建一个dll库,然后用隐式链接的方式让exe链接dll。

以下内容假设已经知道C艹的动态库基本概念,和一些基本的C艹语法。

项目结构

demo项目有两个部分,

· app

· mathlib

在这里插入图片描述

mathlib只提供一个简单的方法power(),app直接调用这个方法返回一个数的平方。

main.cc

#include <iostream>
#include "Math.h"

using namespace std;

int main(int argc, char const *argv[])
{
    int a = 2;

    cout<< "power by <math>: " << power(a) << endl;
    return 0;
}

Math.h

#ifndef DEMO_MATH_LIB
#define DEMO_MATH_LIB

#ifdef __cplusplus
extern "C"{
#endif

_declspec(dllexport) int power(int a);

#ifdef __cplusplus
}
#endif

#endif //DEMO_MATH_LIB

Math.cpp

#include "Math.h"
#include <iostream>

using namespace std;

int power(int a)
{
    cout << "using custom power" << endl;
    return a * a;
}

Math.h中出现了很多宏定义,具体是什么含义不是本篇的内容重点,会另起一篇来具体分析。这里我们只从操作性角度来介绍,用人话来说这就是一篇操作手册。

创建dll项目

visual studio 2019的项目是以solution来划分的,我们这里先创建一个dll的 sln。

创建新项目

在这里插入图片描述

填写项目名

在这里插入图片描述

之后点创建就完了

删除自带的dllmain.cpp文件

一般创建的dll项目会自带 dllmain.cpp,是默认用来做dll入口的。我们这里不需要,把它删掉就完了。同时删掉的还有framework和pch

在这里插入图片描述

添加src和header

在这里插入图片描述
选择现有项,
在这里插入图片描述

添加lib文件进去,然后稍微调下位置,头文件放头文件目录下,不放也没所谓。

在这里插入图片描述

修改预编译头

右键math_lib,属性,进去C/C++的预编译头里,关掉预编译头选项。否则你编译会出现下面的错误,

在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “pch.h””?

在这里插入图片描述

生成

右键math_lib项目然后点生成,就可以产出dll文件了。
在这里插入图片描述
dll是在exe启动的时候会去加载的动态链接库。

lib也是我们需要的,它是静态库,在编译exe的时候需要用来做静态符号链接,但它不会编进exe里。

创建exe项目

这次我们要创建控制台应用
在这里插入图片描述

删除自带文件,添加我们的

下面的操作跟dll的操作差不多,添加完main.cc后差不多这个样子
在这里插入图片描述

添加编译依赖的头文件和lib文件

添加前需要把Math.h复制到main.cc的同个目录,然后添加到头文件里。不然编译的时候会发生找不到符号错误。

添加完差不多这样子
在这里插入图片描述

编译生成

生成的结果,
在这里插入图片描述

现在我们有了exe了,但运行的话会直接调出进程。

在这里插入图片描述

因为目录下没有dll文件。复制过来就行了。

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值