1、新建DLLTest文件夹,在该文件夹中新建source文件夹。
2、在source文件夹中造add.c。
3、win+R+cmd请出总指挥“命令行”,输入。
4、继续输入(路径也要随机应变)link /DLL /out:E:\VCfile\DLLTest\source\add.dll E:\VCfile\DLLTest\source\add.obj。
5、新建源文件call_dll.c或.cpp放到DLLTest文件夹,同时add.dll也复制过来。
6、编译,连接运行出现个5。调用成功。
注意事项:
C语言能以简易码镇的方式迟隐粗编译、携禅处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
(1)编写程序时,你要包含(#include "什么.h") dll文件作者世备提供 的 头文件(.h文件) 。程序里,便和普通函数调用一样,去调用猛饥它的函数。
(2)程序编译时,你要链接 dll文件作者提供 的 (.lib文件) 库文件。
当然,你可以在源程序里把.lib 名字 写上,编译时自动去链接,例子:
#pragma comment (lib, "什么.lib")
(3)执行搜知毁时,要有 .dll 文件. 放在当前文件夹或系统文件夹里。
创建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))
}
编译执行便可成功。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)