VS2017 DLL动静态库使用教程【一】创建一个DLL

考虑两个问题:

1,printf是我们用过很多次的函数,但这个函数定义在哪里?他只有<stdio.h>一个声明。

2,你发明一个有价值的算法,需要给别人使用,又不想开放源码。

在c++里,使用库的技术,可以将编译好的代码提供给第其他程序员,保证代码的隐私性,

库为两种:

1,动态库 Dynamic Link Library (DLL)

2,静态库 static library(lib)

两者区别:

静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。


好了废话不多,我们开始创建一个动态库:

首先在vs2017中新建一个DLL库,名称随意,这里名称为“DLL_1”



目录文件很多,我们暂时无需理会,新建一个cpp文件,这里叫mydll.cpp,输入下列代码

//要导出一个全局函数,就用关键字_declspec(dllexport)来声明
//下边是一个把两个变量相加的函数,相信大家都看得懂
_declspec(dllexport) int add(int a, int b) 
{
	return a + b;
}


然后右击这个项目,选择属性。


然后设置不适用预编译头


多线程调试(/Mtd)



然后编译,在目录Debug下会得到dll和lib两个文件


然后新建一个空白项目,把得到的两个文件添加到他的目录内,就像你平时做c++练习一样

这里这个项目叫“DLLAPP”

输入代码

#include <iostream>
#include <Windows.h>

//声明库
#pragma comment(lib,"DLL_1.lib")

//声明,此函数要在dll导入
_declspec(dllexport) int add(int a, int b);

int main()
{
	int a;
	printf("%d\n", add(1, 2));
	system("pause");
	return 0;
}


是不是可以使用了呢?

猜你喜欢

转载自blog.csdn.net/nullccc/article/details/80879224