开发环境:Code:Blocks
版本:13.12
语言:C
用途:学习记录
step 1:创建动态链接库项目
File--New--Projects--Dynamic Link Library--Go
Project title: mydll
Folder to create project in:C:\Users\Administrator\Desktop\codeblocks\ P.S.随意,本例为用户桌面的codeblocks文件夹下
Project filename:mydll.cdp P.S.自动生成
Resulting filename:C:\Users\Administrator\Desktop\codeblocks\mydll\mydll.cbp P.S.自动生成
Next--Finish
Step 2:创建mydll.c和mydll.h文件
File--New--Files--C/C++ source--Go-- 选择C --Next 在C:\Users\Administrator\Desktop\codeblocks\mydll路径下创建mydll.c文件 勾选上debug和release
File--New--Files--C/C++ header--Go 在C:\Users\Administrator\Desktop\codeblocks\mydll路径下创建mydll.h文件
//mydll.c
#include "mydll.h" //自定义头文件用双引号
//其他人的一个程序实例
int DLL_EXPORT add(int x,int y)
{
return x+y;
}
//mydll.h
#ifndef MYDLL_H_INCLUDED
#define MYDLL_H_INCLUDED
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif // BUILD_DLL
int DLL_EXPORT add(int,int);//函数类型+DLL_EXPORT关键字+函数名 形参类型代替形参
#endif // MYDLL_H_INCLUDED
Build--Build 编译,在C:\Users\Administrator\Desktop\codeblocks\mydll\bin\Debug下生成:libmydll.a libmydll.def mydll.dll三个文件
Step 3:创建新项目,显式调用mydll.dll
File--New--Projects--Console application--Go--选择C (同Step 1,下略)
Project title: mytest
重新编写main.c程序
#include <stdio.h>
#include <windows.h>
typedef int(*lpAdd)(int,int); //定义函数类型
HINSTANCE hDll; //DLL句柄
lpAdd add;
int main()
{
hDll = LoadLibrary("simple.dll"); //加载 dll
add = (lpAdd)GetProcAddress(hDll, "add");//通过指针获取函数方法
printf("id = %d\n", add(1,2) );//调用函数
FreeLibrary(hDll);//释放Dll句柄
system("pause");
return 0;
}
参考资料:
http://hi.baidu.com/hellosim/item/9ae4317168f4a74bee1e53cb