文章目录
1.打开VS2017,新建动态链接库(DLL)
2.新建头文件–标头.h
头文件中先不用写内容
3.新建源文件–源.cpp
3.1 包含头文件
#include "stdafx.h"
#include "标头.h"
3.2 自定义函数
int funAdd(int a, int b)
{
return (a + b);
}
源.cpp --源码如下:
#include "stdafx.h"
#include "标头.h"
int funAdd(int a, int b)
{
return (a + b);
}
4.打开头文件,添加如下语句(自己写的自定义的函数)
#ifndef _TESTDLL_H_
#define _TESTDLL_H_
__declspec(dllexport) int funAdd(int a, int b);
#endif
5.菜单栏–生成–生成解决方案(F7)
生成成功后,右键解决方案在文件资源管理器中打开文件夹(自己新建项目时的路径),在Debug目录中就可以看到生成的.dll和.lib文件
6.接下来重新建一个空项目
7.把头文件(标头.h)和生成的.dll及.lib文件拷贝到【6】新建项目的文件夹中
#pragma comment(lib,"TestDLL.lib")
#include <stdio.h>
#include "TestDLL.h"
int main()
{
int a = 5, b = 6;
int c = funAdd(a, b);
printf("c=%d", c);
getchar();
}
注:pragma comment(…)该指令将一个注释记录放入一个对象文件或可执行文件中。 常用的lib关键字,可以帮我们连入一个库文件。
和在工程设置里写上链入TestDLL.lib的效果一样(两种方式等价,或说一个隐式一个显式调用),不过这种方法写的程序别人在使用你的代码的时候就不用再设置工程settings了。告诉连接器连接的时候要找TestDLL.lib,这样你就不用在linker的lib设置里指定这个lib了。
#pragma comment( comment-type [,“commentstring”] )
该宏放置一个注释到对象文件或者可执行文件。comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。commentstring是一个提供为comment-type提供附加信息的字符串,
Remarks:
1、compiler:放置编译器的版本或者名字到一个对象文件,该选项是被linker忽略的。
2、exestr:在以后的版本将被取消。
3、lib:放置一个库搜索记录到对象文件中,这个类型应该是和commentstring(指定你要Liner搜索的lib的名称和路径)这个库的名字放在Object文件的默认库搜索记录的后面,linker搜索这个库就像你在命令行输入这个命令一样。你可以在一个源文件中设置多个库记录,它们在object文件中的顺序和在源文件中的顺序一样。如果默认库和附加库的次序是需要区别的,使用Z编译开关是防止默认库放到object模块。
4、linker:指定一个连接选项,这样就不用在命令行输入或者在开发环境中设置了。
8.Ctrl+F5
成功!