一个工程怎么知道它调用了那些DLL
答案:3 悬赏:80
解决时间 2021-01-27 14:00
- 提问者网友:动次大次蹦擦擦
- 2021-01-26 21:56
一个工程怎么知道它调用了那些DLL
最佳答案
- 二级知识专家网友:患得患失的劫
- 2021-01-26 22:47
我想,你应该已经在网上查到大概的用法了吧,比如:
[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);
[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);
全部回答
- 1楼网友:独行浪子会拥风
- 2021-01-27 00:01
运行库组件
你可以在腾讯电脑管家的电脑诊断中找到软件问题,选择丢失VC++组件,点击立即修复。
或
在工具箱,打开电脑诊所,丢失.Dll 文件,进行一键修复
你可以在腾讯电脑管家的电脑诊断中找到软件问题,选择丢失VC++组件,点击立即修复。
或
在工具箱,打开电脑诊所,丢失.Dll 文件,进行一键修复
- 2楼网友:举杯邀酒敬孤独
- 2021-01-26 23:10
谁给你这个dll谁负责你有没想过?就算你知道了引用了其他dll的名字,对方没给你,你还不一样要去找人要吗,所以提供你dll应该把其需要的全部dll给足你。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯