DLL ONE
1.新建一个空的DDL工程
2.新建一个源文件。
3.添加代码
_declspec(dllexport) int add(int x,int y)
{
return x+y;
}
4.编译.. 产生dll,lib,exp文件.
5.使用 dumpbin -exports ddl1.dll 查看导出函数信息.
DLL TWO
1.新建一个空的DDL工程
2.新建一个头文件,源文件。
3.添加代码
//头文件代码
#ifndef DLL1_API
#else
#define DLL1_API extern "C" _declspec(dllexport)
#endif
DLL1_API int add(int x,int y);
//源文件代码
#define DLL1_API extern "C" _declspec(dllexport)
#include "ddl1.h"
int add(int x,int y)
{
return x+y;
}
4.编译.. 产生dll,lib,exp文件.
5.使用 dumpbin -exports ddl1.dll 查看导出函数信息.
DLL THREE
语句块: def文件
头文件
int add(int x,int y);
源文件
#include "ddl1.h"
int add(int x,int y)
{
return x+y;
}
def文件
EXPORTS
add
测试一
1.新建一MFC工程
2.添加BUTTON,并导入LIB #pragma comment(lib,"ddl1.lib"),复制LIB,DLL到测试工程中。
3.为BUTTON编写代码
//extern int add(int x,int y);
_declspec(dllimport) int add(int x,int y);
void CTestdll1Dlg::OnButtonAdd()
{
CString str;
sprintf(str.LockBuffer(),"1+2=%d",add(1,2));
MessageBox(str);
}
测试二
//extern int add(int x,int y);
//_declspec(dllimport) int add(int x,int y);
void CTestdll1Dlg::OnButtonAdd()
{
/*CString str;
sprintf(str.LockBuffer(),"1+2=%d",add(1,2));
MessageBox(str);*/
HINSTANCE hInst=LoadLibrary("ddl1.dll");
typedef int (*ADDPROC)(int x,int y);
ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"add");
if(!Add)
{
MessageBox("获取函数地址失败!");
return;
}
CString str;
str.Format("5+3=%d",Add(5,3));
MessageBox(str);
FreeLibrary(hInst);
}