社区
进程/线程/DLL
帖子详情
300分请教高手dll的高级应用问题
xiaosun
2003-04-25 04:45:05
一个程序,可以动态的加载动态连接库,写动态连接库的人可以给你一个文本来描述动态连接库的名 函数原型,注意是文本的,所以你的程序里不知道对方会给你一个什么样的函数、函数有几个参数,要求能够调用他的程序,假设参数是window标志的,没有用户自定义的类型。
我已经实现了一半,就差函数参数的处理了
谢谢
...全文
134
37
打赏
收藏
300分请教高手dll的高级应用问题
一个程序,可以动态的加载动态连接库,写动态连接库的人可以给你一个文本来描述动态连接库的名 函数原型,注意是文本的,所以你的程序里不知道对方会给你一个什么样的函数、函数有几个参数,要求能够调用他的程序,假设参数是window标志的,没有用户自定义的类型。 我已经实现了一半,就差函数参数的处理了 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
37 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
webber84
2003-04-27
打赏
举报
回复
你可以先写一个正常的函数调用,让编译器给你生成汇编代码,看看编译器是怎么把参数压栈的,其实直接把编译器生成的汇编代码拷到你的源程序中就行了。
功名半纸
2003-04-26
打赏
举报
回复
利用C++的类成员函数指针和模版好像有可能做的到!!!!
回去试试!!!!
xiaosun
2003-04-26
打赏
举报
回复
得到的参数总是不太对,
还有,c或者c++有没有这样的功能封装?
xiaosun
2003-04-26
打赏
举报
回复
但是我在传递数组的时候出现了问题
weijiechen
2003-04-26
打赏
举报
回复
up
o_racle
2003-04-26
打赏
举报
回复
我的程序不用有任何变化
-------------------------
有相似之处
webber84
2003-04-26
打赏
举报
回复
把你写的代码贴出来看看吧。
seeQe
2003-04-26
打赏
举报
回复
学习
xiaosun
2003-04-26
打赏
举报
回复
webber84(***闭关修炼中***) :
谢谢你,这不是我遇到的问题,我是想将参数放到数组,然后循环压栈,因为dll的函数中的参数个数可能是不同的类型,所以我要用一个variant 数组来存放收到到参数变量,然后压栈。
不知道你是否明白了我的意思。
webber84
2003-04-26
打赏
举报
回复
不知道你说的是什么问题,我试了一下是可以传数组的。
这个是用来测试的DLL导出函数定义,__cdecl调用方式:
__declspec(dllexport) void print(int* array,int size)
{
for(int i=0;i<size;i++)
cout<<array[i]<<endl;
}
下面是调用代码:
HMODULE hMod=LoadLibrary("dll.dll");
PROC pfn=GetProcAddress(hMod,"print");
int array[5]={1,2,3,4,5};
int ** address=(int**)&array;
__asm
{
push 5;
push address;//注意这里不能直接把数组名压到栈里,不知道你遇到的是不是这个问题
call pfn;
add esp,8; //如果导出函数是__stdcall的,这个就不要了。
}
经测试一切正常。
xiaosun
2003-04-26
打赏
举报
回复
force_eagle(战鹰) :能够再给的具体一点吗
类的成员函数指针我知道 ->*
但是如何用模板来包装?谢谢提供思路
xiaosun
2003-04-25
打赏
举报
回复
希望大家多发表想法,谢谢
webber84
2003-04-25
打赏
举报
回复
有意思,回去做做看。
xiaosun
2003-04-25
打赏
举报
回复
必需动态连接,显式调用
xiaosun
2003-04-25
打赏
举报
回复
不行,我要写的是一个可以动态加载并运行指定dll的程序,但是我事先不知道dll中的函数原型,写dll的人要做的只是用文本将dll中要调用的函数类型告诉我就可以了。而我的程序不用有任何变化
COOL099
2003-04-25
打赏
举报
回复
靜態鏈接不行嗎?
你可以根據DLL文件獲得Lib導入庫
要用到DumpBin.exe /exports xxx.dll>xxx.def
修改為常見的def 文件。
再用lib .exe /def:xxx.def 生成xxx.lib .
接下來就不用說了吧。
everandforever
2003-04-25
打赏
举报
回复
大概是的。
xiaosun
2003-04-25
打赏
举报
回复
噢,我明白了,谢谢你。
对于数组怎么处理,push的时候只写数组的地址(也就是数组名)就可以?
xiaosun
2003-04-25
打赏
举报
回复
everandforever(Forever) :你有msn吗?我们通过msn来交流好吗?谢谢
everandforever
2003-04-25
打赏
举报
回复
CDECL 是由调用者负责清理栈的,所以要最后一句。别的方法,不知道。
加载更多回复(17)
近
300
个 Windows 10 可执行文件易受
DLL
劫持攻击
研究发现,近
300
个Windows可执行文件易受
DLL
劫持,只需简单VBScript即可获得管理员权限并绕过UAC。
DLL
劫持攻击可使经验丰富的攻击者执行任意代码、提权并持久地停留在目标系统上。
《OpenAI》运行故障:缺失opencv_world
300
.
dll
文件的修复全攻略
使用OpenAI相关
应用
或开发环境时,缺失opencv_world
300
.
dll
文件的错误,通常因OpenCV文件未正确安装或路径设置有误。本文提供解决办法,如重新安装OpenCV、检查环境变量、下载
DLL
修复工具、检查依赖项、清理重建虚拟环境及查看错误日志等。
VS2015专业版+opencv3.3环境配置以及出现计算机中丢失 opencv_world
300
d.
dll
的
问题
这篇博客详细介绍了如何在VS2015中配置OpenCV3.3的步骤,包括下载安装、环境变量配置、VS项目设置,并解决了在调试过程中遇到的计算机中丢失opencv_world
300
d.
dll
的错误,通过将
dll
文件复制到System32目录解决
问题
。
c++
dll
继续使用然后强制删除
dll
文件_Windows 10系统安全风险,近
300
个系统执行文件容易遭受劫持攻击...
普华永道研究员发现Windows10上近
300
个可执行文件易受
DLL
劫持攻击,可通过简单VBScript获取管理权限并绕过UAC。
7-Zip
DLL
选择指南:bit7z兼容的7z.
dll
/7za.
dll
功能对比
本文对比bit7z支持的7z.
dll
与7za.
dll
在压缩格式支持、文件体积、依赖性及加载机制上的核心差异:7z.
dll
支持30+格式(含RAR、ISO),体积约1.5–2MB;7za.
dll
仅支持基础格式(7z/ZIP/GZIP等),体积仅
300
–500KB,单文件部署。bit7z默认优先加载7z.
dll
并自动回退至7za.
dll
,支持手动指定路径。选择依据包括项目对格式广度、
应用
体积和平台约束的需求。
进程/线程/DLL
15,465
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章