中易网

一个工程怎么知道它调用了那些DLL

答案:3  悬赏:80  
解决时间 2021-01-27 14:00
一个工程怎么知道它调用了那些DLL
最佳答案
我想,你应该已经在网上查到大概的用法了吧,比如:
[DllImport(“hello.dll”)]
private extern static int DeviceOpen(int aDevType, int aDevIndex,ref IntPtr aHandle);
用于调用hello.dll里的DeviceOpen函数。

但是这个时候可能会出现一些莫名其妙的问题,常见的有如下两个:
1. 函数名。C++编译器对函数名的处理与C不同,会加上一些字符用于标识函数的参数信息,比如上述的DeviceOpen函数的实际名称,可能就是:
?DeviceOpen@@YAHHHPAPAX@Z
这个可以用十六进制编辑器在你的Dll里面查找然后验证一下,一般都是前面后面加上一点字符而已。
然后使用时就这样:
[DllImport(DLL_FILE, EntryPoint = "?DeviceOpen@@YAHHHPAPAX@Z")]
private extern static int DeviceOpen(int aDevType, int aDevIndex,ref IntPtr aHandle);

2. 调用协定。对于CLR来说普通的WindowsAPI,调用协定是默认值,也就是stdcall。但是C++编译出来的函数,默认值一般是cdecl。所以想正确调用自己编写的Dll内的函数,还要指定调用协议。如:
[DllImport(DLL_FILE, CallingConvention = CallingConvention.Cdecl, EntryPoint = "?DeviceOpen@@YAHHHPAPAX@Z")]
private extern static int DeviceOpen(int aDevType, int aDevIndex,ref IntPtr aHandle);
全部回答
运行库组件
你可以在腾讯电脑管家的电脑诊断中找到软件问题,选择丢失VC++组件,点击立即修复。

在工具箱,打开电脑诊所,丢失.Dll 文件,进行一键修复
谁给你这个dll谁负责你有没想过?就算你知道了引用了其他dll的名字,对方没给你,你还不一样要去找人要吗,所以提供你dll应该把其需要的全部dll给足你。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
vivox5l手势怎么换浏览器
野钓鲤鱼用什么窝料
突破讨厌被人推怎么破
6个月的宝宝小阴唇有红点字子可以用丁酸氯化
eda画图f=ab bc 求大神
我想急求宇宙ck0620数控车床说明书。编程方法
ps4 pro能2k吗
歌词悠悠岁月岁月悠悠
fba跟卖是不是要选择 i want amazon to ship
我家换新显卡为什么屏幕不亮?
天刀精英服申请多久能看出淘没淘汰
与公司之间的实习协一般指什么
新场古镇的古镇风貌传说
求大雁草图片??
中武村怎么去啊,我要去那办事
推荐资讯
1.80火龙元素版本怎么刷元宝 顺便求个服 火龙
有一句歌词‘傻瓜,我们都一样’是什么歌
网上开鞋店如何解决货源?
中国移动(新营指定专营店)地址有知道的么?有
当别人无视你的存在时我该怎么办?
电梯更换主机属于大修还是改造 更换主机的步
华为g9plus是什么型号
求青蛙情头,多谢
糯小米怎么吃
单反后备机是什么
土建资料报审表和检验批日期怎么填写?
企鹅电竞直播怎样上人气
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?