社区
进程/线程/DLL
帖子详情
怎样调用dll事件
computerlu
2003-01-07 01:17:24
我用了一个dll,dll中的对象中有事件,但如何才能在vc中触发dll中的事件,使其响应,请高手们指点。
...全文
96
5
打赏
收藏
怎样调用dll事件
我用了一个dll,dll中的对象中有事件,但如何才能在vc中触发dll中的事件,使其响应,请高手们指点。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mrwws
2003-01-15
打赏
举报
回复
可以用导出类实现:
dll中:
class AFX_EXT_CLASS CFunDef {
public:
CFunDef();
virtual void CallBackFun(void *p);
};
extern "C" __declspec(dllexport) BOOL Fun(CFunDef * pCFunDef);
返回事件时就调用 pCFunDef->CallBackFun(void *p);
exe中:
class CExportClassEx : public CFunDef
{
public:
CExportClassEx();
virtual ~CExportClassEx();
void CallBackFun(CString * p);
};
程序中执行
CExportClassEx cExportClass;
Fun((CFunDef *)&cExportClass);
后你就可以在CallBackFun(void *p)函数体中响应dll的事件了。
icelight
2003-01-07
打赏
举报
回复
mark
rick1126
2003-01-07
打赏
举报
回复
一般事件可以理解为"时机" + "条件" + "行为", 行为就是事件满足条件的时候需要调用的处理子程序, 因为条件不同, 所以我们使用函数指针规定了回调函数的参数形式, 然后根据情况赋予函数指针对应的处理函数地址, 就是回调函数, 为此回调一般就是调用者将自己的处理子程序注册给被调用的模块, 被调用模块决定在特定条件下调用哪个子程序, 当然也可能包含必要的撤销注册清理现场的步骤. 回调函数是实现事件支持的基础 -- 控件的事件, 连接点等等都是借助回调机制的.
computerlu
2003-01-07
打赏
举报
回复
不太明白,可否说的更详细一些
verybigbug
2003-01-07
打赏
举报
回复
用回调函数。
事件的底层机制可以认为是回调函数。
QT编写
DLL
调用
示例 方法 参数 返回值
事件
回调
QT编写
DLL
给外部程序
调用
示例 方法 参数 返回值
事件
回调 : 1:C#或者 NET 第一步:引入命名空间; using System Runtime InteropServices; 第二步:声明函数 必须与实际
DLL
中函数名及参数一致; [
Dll
Import "qt
dll
dll
" ] public static extern int add int i ; 第三步:
调用
函数执行; Console WriteLine add 10 ToString ; 2:QT 第一步:引入头文件; #include <QLibrary> 第二步:定义函数指针 以备
调用
; typedef int Add int ; 第三步:载入
DLL
调用
函数执行; QLibrary lib "qt
dll
dll
" ; lib load ; Add add Add lib resolve "add" ; add 50 ; 3:C或C++ 第一步:引入头文件; #include <windows h> 第二步:定义函数指针; typedef int Add int ; 第三步:载入
DLL
调用
函数执行; HINSTANCE h
Dll
LoadLibrary "qt
dll
dll
" ; 载入
DLL
获取句柄 if h
Dll
NULL { Add add Add GetProcAddress h
Dll
"add" ; 获取函数地址 printf "%d" add 110 ; FreeLibrary h
Dll
; 释放
DLL
}">QT编写
DLL
给外部程序
调用
示例 方法 参数 返回值
事件
回调 : 1:C#或者 NET 第一步:引入命名空间; using System Runtime InteropServices; 第二步:声明函数 必须与实际
DLL
中函数名及参数一致; [
Dll
Import "qt
dll
dll
" ] public static extern int add in [更多]
调用
扫描仪
dll
由于前几天项目需要所以写了一个
调用
扫描仪代码,已经封装好,只要有扫描仪驱动就可以使用,内置了一些方法
事件
等,实现扫描一张显示一张的
事件
等,注此类库只支持win32系统,若有高手知道如何解决支持win64请联系一起讨论,谢谢
C++
调用
dll
的方法
在C++中,为了支持重载机制,在编译生成的汇编码中,要对函数的名字进行一些处理,加入比如函数的返回类型等等.而在C中,只是简单的函数名字而已,不会加入其他的信息.也就是说:C++和C对产生的函数名字的处理是不一样的。
dll
的开发者可以通过
dll
隐藏接口的代码实现,比如你只想让其他人使用你的算法,但不想让其他人知道你的算法和逻辑代码,就可以把它们封装到
dll
中。动态
调用
不是链接时完成的,而是在运行时完成的,动态
调用
不会在可执行文件中写入
DLL
相关的信息,而是直接
调用
dll
中的函数。
python 动态
调用
dll
和静态
调用
dll
使用pywin32扩展可以静态地
调用
DLL
文件中的函数。使用ctypes库可以动态地加载和
调用
DLL
文件中的函数。ctypes库提供了一组类型和函数,用于声明和
调用
C函数,并处理C数据类型。在Python中,可以使用ctypes库来动态
调用
DLL
文件,也可以使用pywin32扩展来静态
调用
DLL
文件。来
调用
DLL
中的函数。与动态
调用
不同,静态
调用
时
DLL
文件会在程序启动时被加载,而不是在
调用
函数时动态加载。来
调用
DLL
中的函数。如果
DLL
中的函数需要传递参数,则可以使用。函数加载
DLL
文件,并使用。
使用QT
调用
DLL
方法
在使用
DLL
时,建议仔细阅读
DLL
的文档或提供者提供的说明,以确保正确地
调用
和使用
DLL
的方法。确保将
DLL
文件放置在QT项目的合适位置,以便在编译和运行时能够找到它。将"/path/to/
dll
"替换为
DLL
文件所在的路径,将"
dll
name"替换为
DLL
文件的名称(不包括文件扩展名)。在需要使用
DLL
方法的源文件中,包含
DLL
的头文件。通常,
DLL
的提供者会提供相应的头文件,其中包含了可用函数和方法的声明。确保将"
dll
Function"替换为实际的
DLL
函数名,并提供适当的参数。
进程/线程/DLL
15,473
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章