怎么调用别人的dll文件

当我得到一个dll文件,当然除了这个文件外,还有知道这个文件控制的一些效果外,我就不知道任何信息了,但在实际的编程中,如果我想引用别人的dll文件我还需要知道这个文件的那... 当我得到一个dll文件,当然除了这个文件外,还有知道这个文件控制的一些效果外,我就不知道任何信息了,但在实际的编程中,如果我想引用别人的dll文件我还需要知道这个文件的那些信息呢?是否还要从作者哪儿知道函数名称,接口名称,假设作者不愿透露,这个dll就是个黑盒子吗? 展开
 我来答
山水阿锐
推荐于2017-10-13 · TA获得超过34.3万个赞
知道顶级答主
回答量:23.7万
采纳率:91%
帮助的人:3.3亿
展开全部
如果是简单的dll,没有导出为各种类的,仅导出了一些简单的函数。那么可以通过 Dependency walker 或者其他工具来检查dll的导出表,可以看到导出函数的函数名。通过名字猜测其意义。
但函数的参数类型,个数,无法看到。
如果有一定水平,可通过反汇编,检查其堆栈顶移动的字节数猜测其参数个数。简单分析也不难得出其含义。
char 类型当 short 传.
char* 类型, 如果仅用作入参, 设置为 Type.String, 传入 bytes[] 即可.
如果用作出参, 则要用到 指针: Pointer, 譬如:

int buffer;

setParameter(2, Type.INT, buffer);
invoke 完毕后

Pointer headBuff = Pointer.createPointerToNativeMemory(buffer, 大小);

byte[] bytes = headBuffer.getMemory()
天河流纹石
推荐于2017-10-14 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7624
采纳率:76%
帮助的人:4131万
展开全部
这个分情况:

如果是简单的dll,没有导出为各种类的,仅导出了一些简单的函数。那么可以通过 Dependency Walker 或者其他工具来检查dll的导出表,可以看到导出函数的函数名。通过名字猜测其意义。
但函数的参数类型,个数,无法看到。
如果有一定水平,可通过反汇编,检查其堆栈顶移动的字节数猜测其参数个数。简单分析也不难得出其含义。

如果是较复杂的dll,尤其是C++包含类的方法导出的DLL,那么就只好问作者要各种接口定义,导入库了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式