怎么调用别人的dll文件

当我得到一个dll文件,当然除了这个文件外,还有知道这个文件控制的一些效果外,我就不知道任何信息了,但在实际的编程中,如果我想引用别人的dll文件我还需要知道这个文件的那些信息呢?是否还要从作者哪儿知道函数名称,接口名称,假设作者不愿透露,这个dll就是个黑盒子吗?

如果是简单的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()
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-14
这个分情况:

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

如果是较复杂的dll,尤其是C++包含类的方法导出的DLL,那么就只好问作者要各种接口定义,导入库了。本回答被提问者采纳

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

DLL怎么调用另一个DLL
1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下;2.把你的youApp.lib拷到你目标工程(需调用youApp.DLL的工程)目录下;3.把你的youApp.h(包含输出函数的定义)拷到你目标工程(需调用youApp.DLL的工程)目录下;4.打开你的目标工程选中工程,选择Visual C++的Project主菜单的...

别人发了个dll格式的文件,我要怎么打开?
解决DLL文件缺失问题,需根据具体情况进行操作。若因安装程序导致缺失,重装程序或下载新版本即可。若无明显原因出现缺失,可利用系统文件检查工具、DLL修复工具或进行系统还原。系统文件检查工具能自动修复或还原缺失或损坏的文件,DLL修复工具则能检测并自动修复缺失的DLL文件,系统还原则恢复到之前状态,避免文...

如何引用dll文件?
方法1:C#可以调用封装好的基于纯C的dll,但如果是C++的类,没有很简便的方法直接调用。使用方法:直接添加引用是不行的,使用DLLIMPORT。2 方法2:把.dll放到exe程序所在的目录,在C#里声明,例如:[DllImport("DMC5480.dll", EntryPoint = "要调用的方法名", CallingConvention = CallingConvention.Cde...

如何引用dll文件?
方法1:C#可以调用封装好的基于纯C的dll,但如果是C++的类,没有很简便的方法直接调用。使用方法:直接添加引用是不行的,使用DLLIMPORT。\\x0d\\x0a\\x0d\\x0a如果是类库dll文件,引用的步骤是这样的:在解决方案管理器中,选中要添加引用的项目或网站-右击-添加引用-选择要添加的dll文件路径-确定,...

易语言如何调用DLL文件_易语言DLL文件调用方法
首先,需要在易语言中声明需要调用的DLL文件。这可以通过在易语言中使用“声明”关键字来完成。例如,可以使用以下代码来声明一个需要调用的DLL文件:声明 函数 函数名 传入参数 类型 结果参数 类型 其中,函数名是需要调用的DLL文件中的函数名,传入参数类型是函数需要传入的参数类型,结果参数类型是函数的...

如何引用dll文件
从你的意思中看出来你现在是调用托管的dll,方法是 “在解决方案管理器” - “解决方案”(或项目) 中的任意地方, 右键“添加引用”,“浏览”,选择你需要调用的dll文件,确定即可,该dll会自动复制到bin目录,打包时也会自动复制到你发布的地方。添加完了引用,现在如何调用呢?如果有命名空间则...

易语言如何调用别人外卦的dll
如果你不知道别人DLL的接口,那么你是无法调用的,但是如果你知道接口的话,可以点击菜单“插入”->“DLL命令”,然后DLL命令可以自己取,DLL库文件名就是别人的DLL文件名,在DLL库中对应命令名就是别人DLL库里的某个函数名,这样你就可以调用了,至于函数的参数,也要按照原先别人定义的写上去,顺序不能...

C#中怎么调用外部DLL
\\Windows\\system32目录下。先在要用到DLL的单元里面声明DLL的方法和参数(要和DLL中提供的方法一致):[DllImport("imgMMPI.dll", CharSet = CharSet.Ansi, SetLastError = true)] public static extern bool DrawMMPI(string s);之后你就把这个方法作为一般的方法使用就行了!

易语言如何调用别人的DLL
通常你只能调用自己写的,因为你知道你自己写这个dll他的用法是咋样的。如果是别人写的那么他就必须要声明所需调用那些函数进行公开,必要时他还需要写出一份关于调用的例子,别人写的dll大多都是c++的,例子大多就是c+的。dll在win上大多语言是通用的 先跟你说说,你为什么要调用别人的dll,你调用总...

相似回答