本帖最后由 Tz纸鹤 于 2017-4-26 20:25 编辑
在c++写界面我可是很头大的,所以尝试写dll提供个易语言用,可是遇到各种问题。。。例如调用约定__stdcall,更离谱的是明明extern “C”了,还是编译出来的导出函数还是有问题,最后用了def文件解决。。
使用c++的dll时存在的问题当然是指针问题。所以我写了这个函数供参考,恩,解析也仅供参考。。。
变量名 | 类 型 | 静态 | 数组 | 备 注 | b | MODULEENTRY32 | | | 变量地址b | 整数型 | | | 指针地址b | 整数型 | | |
变量地址b = 取变量地址 (b ) 指针地址b = 取指针地址 (b ) RtlMoveMemory (变量地址b, 取变量地址 (指针 ), 4 ) 调试输出 (“---b的数据---”)调试输出 (b.dwSize )调试输出 (b.th32ModuleID )调试输出 (“设置a的数据 --> modBaseAddr = 3”)b.modBaseAddr = 3 RtlMoveMemory (变量地址b, 取变量地址 (指针地址b ), 4 )
需要注意的是文本型数据。。。
例如我的例子中 结构体中
c++
char szModule[MAX_MODULE_NAME32 + 1];
char szExePath[MAX_PATH];
易语言
.成员 szModule, 字节型, , "256", 模块名称
.成员 szExePath, 字节型, , "260", 文件路径
输出文本时, 使用 到文本(模块.szModule) 会出错退出的
应该使用 指针到文本 (取变量地址 (模块.szModule))
----------------------------------------
2017.4.26 20:07
重新封装一下
指针例子.e
(6.38 KB, 下载次数: 444)
|