创建dll工程,工程名定为dll,新建并添加头文件dllDemo.h
//dlldemo.h
#ifdef __cplusplus
#define EXPORT extern "C" __declspec(dllexport)
#else
#define EXPORT __declspec(dllexport)
#endif
EXPORT int add(int a,int b) ;
EXPORT int sub(int a,int b);
新建并添加源文件dllDemo.c
//dlldemo.c
#include <windows.h>
#include "dlldemo.h"
int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved) {
return TRUE ;
}
EXPORT int add(int a,int b) {
return a+b;
}
EXPORT int sub(int a,int b){
return a-b;
}
编译成功后会生成一个dll文件。
再新建一个普通的win32 console工程,工程属性里面的字符集要设为多字节,不要使用Unicode。将dll文件放到目录下面。新建并添加main.c
#include <WINDOWS.H>
#include <WINBASE.H>
#include <stdio.h>
typedef int (*MYPROC)(int, int);
int main()
{
HINSTANCE LibHandle;
MYPROC ProcAdd,ProcSub;
char dllbuf[] = "dll.dll";//dll的路径
char sysbuf[] = "add"; /*过程名*/
char sysbuf1[] = "sub";
LibHandle = LoadLibrary(dllbuf); /*载入dll*/
ProcAdd = (MYPROC)GetProcAddress(LibHandle, sysbuf); /*获取函数sysbuf的地址*/
ProcSub = (MYPROC)GetProcAddress(LibHandle, sysbuf1);
printf("%d\n",(ProcAdd)(3,6));
printf("%d\n",(ProcSub)(3,6));
}
编译执行便可成功。
温馨提示:答案为网友推荐,仅供参考