永发信息网

Dll加载后,如何才能获取dll里面各功能的地址

答案:2  悬赏:50  手机版
解决时间 2021-03-20 04:13
Dll加载后,如何才能获取dll里面各功能的地址Dll加载后,如何才能获取dll里面各功能的地址,是供外部程序调用的功能函数,不是导出函数。
最佳答案
1、没有安装 vc2010,去搜:vc2010 ,下载装上就好了
第一个就是多特,记得分清你的系统是64位还是32位的,64位的就装x64,32位的就装x86的那个文件
2、找到对应的文件,解压到 c:/windows/system32 或者你的游戏的根目录下。
程序的话,尝试使用兼容模式和管理员权限运行游戏试试,操作:程序上→属性→兼容性→勾选上使用管理员权限运行同时使用xp sp3 的兼容模式。
3、还可以用腾讯电脑管家修复下,打开电脑管家——电脑诊所——软件问题——【缺少dll文件】,修复。
全部回答
如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: 
message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头文件中 
#pragma comment(lib, "a.lib") 
然后你的对话框.cpp中包含这个头文件就可以使用message函数了。


如果dll没有对应的.lib文件,那么就只能使用动态加载的方式了。
动态调用动态库步骤:
1、创建一个函数指针,其指针数据类型要与调用的dll引出函数相吻合。
2、通过win32 api函数loadlibrary()显式的调用dll,此函数返回dll的实例句柄。
3、通过win32 api函数getprocaddress()获取要调用的dll的函数地址,把结果赋给自定义函数的指针类型。
4、使用函数指针来调用dll函数。
5、最后调用完成后,通过win32 api函数freelibrary()释放dll函数。

例如:
假设函数的声明为:void message(int a);
//函数指针声明
typedef void (winapi message)(int a);
message *pmessage = 0;

//加载a.dll
hinstance hdlldrv = loadlibrary("a.dll");

//获取message函数的指针
if(hdlldrv)
{
pmessage = (message *)getprocaddress(hdlldrv, "message");
}

然后就可以这样调用函数了:
pmessage(1);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
magic slim减肥药安全吗?要怎么用?请知道的
俏侬乳脂蛋挞液 请问解冻后用不完的蛋挞液怎
如何选择一个好房子,这几点很重要
忆佳快捷宾馆我想知道这个在什么地方
河北涿州有几个邮局,都在哪里?
三年级4班有46人,喜欢打蓝球的有32人,喜欢打
广东有什么好吃的特产
请问乌当中学在那里?
微笑宝贝儿童摄影在哪里啊,我有事要去这个地
这个世界的本源是什么
2K与1.3K的数字电影放映机有什么区别
红动中国一个死不要脸的网站
全程没有歌词,开头女声,类似山歌,开头喊一
不翼而飞的周记阅读答案
管城回族区郑州开锁修锁换锁芯这个地址在什么
推荐资讯
一般的二进制转十进制用减一取反,1000000000
ⅨⅣ开头的壹角值多少钱??急!!!
大货车点火不了,离合器踩不到底?
怎样移栽桂花树苗成活高
我喜欢这样的生活方式的英文怎么说
电池申请海运鉴定书只做MSDS就可以了吗
考银行对英语有什么要求
学习三阶盲拧要多久?
嘉兴一中09届一本率
wp手机游戏模拟人生FreePlay的问题
tone-correcting-essence是什么意思
墨绿色显白还是显黑
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?