动态库的写法,以前没有写过动态库,凭第六感觉应该很简单。but,我却在网上找资料时,没有一个例子是我想要的,简单又能说明问题。以至于耗费了大量的时间。以下例子是用C语言编写,编译环境为vs2015。
//------------------------------------------------------------------------------------------------------------------//
动态库:
编写一个库名字为dllTest
新建方法:
文件-》新建项目-》win32项目-》应用程序类型 选择dll ,附加项目 选择空项目-》完成
添加一个头文件名为test.h,添加一个源文件test.c
test.h 文件内容
#ifndef _TEST_H
#define _TEST_H
_declspec(dllexport) int add(int a, int b); //_declspec(dllexport) 用来导出函数, 若没有,则不能导出对应的.lib文件
#endif // !_TEST_H
test.cpp文件内容
#include "test.h"//包含头文件
int add(int a, int b)//实现add
{
return a + b;
}
右击生成,注意不是点击运行。
生成成功之后会在dllTest\Debug下生成dllTest.dll dllTest.lib
//------------------------------------------------------------------------------------------------------------------//
调用刚刚写的动态库
编写一个程序名为callTest
新建方法:
文件-》新建项目-》win32控制台应用程序-》应用程序类型 控制台应用程序 ,附加项目 选择空项目-》完成
添加一个main.c文件
1)首先将库生成的 dllTest.lib 拷贝到与当前Debug 同一目录下
2)其次,将dllTest.dll 拷贝到Debug下与.exe同一目录下
3)配置:
右击项目-》属性-》链接器-》常规(附加库目录 填写.lib所在的目录,因此.lib也可以不用拷贝到1)目录下,只要引用到就可以)
链接器-》输入(附加依赖项 填写.lib的名字 即dllTest.lib)
4)代码(main.c)
#include "test.h" //将头文件加到该项目的头文件中(即项目头文件下有test.h),这里是包含
#include <stdio.h>
int main()
{
printf("%d",add(7, 8));
system("pause");
return 0;
}
5)运行