DLL函数调用以及回调函数设置
来源:互联网 发布:sql语句where条件查询 编辑:程序博客网 时间:2024/04/26 01:54
在window开发中,需要将一些库编译成DLL以共享给其他程序使用,那么怎样调用DLL函数
1.只是普通调用DLL中的函数
1.1在VS2012中创建一个DLL程序,如MyDLL。
新建一个MyDLL.h头文件,加入如下代码:
extern "C" _declspec(dllexport) void test();
在源文件中,添加如下代码:
#include "MyDLL.h"#include <stdio.h>void test(){ printf(“hello, test”);}
编译成DLL,记下DLL的路径。
1.2创建另一个应用程序win32 console application工程UseDLL,
在包含main的文件中,例如UseDLL.cpp中添加如下代码,注意DLL的路径要填写你刚才生成的DLL路径:
#include "stdafx.h"#include <Windows.h> typedefvoid (*Test)();int main(){ HMODULE p =LoadLibrary(L"C:/Users/rspxri/Documents/VisualStudio 2012/Projects/MyDLL/x64/Debug/MyDLL.dll"); Test mytest = (Test)GetProcAddress(p,"test"); mytest(); return 0;}
2.设置回调函数
当exe程序调用DLL时,给DLL中设置回调函数,这样,DLL可以调用exe中的函数,如下图
修改以上工程代码:
2.1MyDLL
以下是MyDLL的头文件
MyDLL.htypedef void (*CallbackFun)(const char* input); extern "C" _declspec(dllexport) void SetCallBackFun(CallbackFun callbackfun);extern "C" _declspec(dllexport) void test();
以下是DLL源文件
MyDLL.cpp#include "MyDLL.h"CallbackFun myCallback = NULL;void SetCallBackFun(CallbackFun callbackfun){ myCallback = callbackfun;}void test(){ myCallback("in the test function");}
2.2UseDLL
#include "stdafx.h"#include <Windows.h>typedef void (*CallbackFun)(const char* input); typedef void (*SetCallBackFun)(CallbackFun callbackfun); typedef void (*Test)();void myfunction(const char* input){ printf(input);}int main(){ HMODULE p =LoadLibrary(L"C:/Users/rspxri/Documents/VisualStudio 2012/Projects/MyDLL/x64/Debug/MyDLL.dll"); SetCallBackFun setcallbackfun = (SetCallBackFun)GetProcAddress(p,"SetCallBackFun"); Test mytest = (Test)GetProcAddress(p,"test"); setcallbackfun(myfunction); mytest(); return 0;}
2 0
- DLL函数调用以及回调函数设置
- C# 调用dll 回调函数
- DLL与EXE之间的通讯调用 以及 回调函数的线程执行空间
- C# 调用 C dll char* callback 设置回调函数不定参数
- c++函数指针以及回调函数
- 函数调用习惯与回调函数
- 关于回调函数和函数调用
- 程序中调用DLL实现回调函数
- Java调用C语言Dll库回调函数
- C#调用c++dll时,关于回调函数
- jna调用c 的dll(包含回调函数)
- c#调用c++dll接口及回调函数
- 关于回调函数、共享内存的使用,以及进程间函数调用的讨论
- SetTimer设置后没法调用定时器函数(回调函数)吗?
- 回调函数,回调函数应用,qsort函数用法,以及模拟实现qsort函数
- 函数指针、指针函数以及回调函数
- JavaScript中的匿名函数、回调函数、自调用函数
- JavaScript中的匿名函数、回调函数、自调用函数
- Camera HAL v3 overview
- Http编程之HttpClient
- CentOS 5.5使用yum安装Apache+PHP+MySQL
- 教你怎么使用apilication
- 背包系统
- DLL函数调用以及回调函数设置
- 关于Android平台上面is not valid; is your activity running?
- python 代码里使用 cscope
- LeetCode13——Roman to Integer
- quick cocos3.3 目录、lua绑定等备忘
- Apache FileUpload详细介绍
- HTTP协议简介
- jsp案例之输出九九乘法表(仅使用jsp脚本元素)
- 个人笔记-oracle