C#调用DLL问题

问题描述

新学c#不太熟悉,公司发来了DLL文件要求开发客户端的软件,但是DLL的说明中只有方法名称,没有具体的传递参数格式,求问如何在C#上进行调用,越详细越好,谢谢各位

解决方案

解决方案二:
这个不行,需要有参数列表。最好能带有C#或VB.NET的示例代码,这样就表示他们在.NET平台上测试过了,否则dll本身是否可以被.NET调用都是问题,还怎么使用?(不能被.NET调用的dll是存在的)
解决方案三:
引用1楼qldsrx的回复:

这个不行,需要有参数列表。最好能带有C#或VB.NET的示例代码,这样就表示他们在.NET平台上测试过了,否则dll本身是否可以被.NET调用都是问题,还怎么使用?(不能被.NET调用的dll是存在的)

顺便问一下如果他的dll可以被.net调用,可以用反射取得dll的成员列表吗?
解决方案四:
把dll引用进去,自然能看到各个方法的提示了
解决方案五:
引用楼主d326067648n的回复:

新学c#不太熟悉,公司发来了DLL文件要求开发客户端的软件,但是DLL的说明中只有方法名称,没有具体的传递参数格式,求问如何在C#上进行调用,越详细越好,谢谢各位

既然是公司发来的,那么你应该在公司里寻求资源,在这里找个毛呢?你要求他们给DLL附上一份.h文件。怎么,这样的要求很过分吗?
解决方案六:
dll本身不是用.NET开发的,因此不能对其反射,调用的时候也不是直接调用,而是用[DllImport("dll名",CharSet=CharSet.Auto)]属性在.NET里面创建同名方法的声明后才能调用。
解决方案七:
大哥要看你的dll文件是什么,虽然都是dll文件,不同类型的dll,调用方法都不一样的,而且方法参数的话,一般调用的时候,平台会提示的
解决方案八:
如果是不能引用的什么都看不到,现在只有名称,没有参数也是很悲剧的,如果在别的地方可以看到如何用的就好办
解决方案九:
一直忘记问了,你的dll是什么语言开发的?我之前都是建立在C++或Delphi开发的前提说的。
解决方案十:
C#引用DLL有2种,一种可以被.net注册或者COM+之类的,一种不能注册的(一般C/C++写的功能类)可以注册直接添加引用,是COM组件要先注册,DLL则可以直接添加;不能注册的,只可以用C#引用外部DLL的方法来注册方法,搜索"C#引用外部DLL",一大把列子.
解决方案十一:
并不是所有的问题都是技术问题,或者并不是所有的问题都需要依赖技术手段去解决。我觉得你遇到的问题实际上是沟通方面的问题。公司内部提供的DLL,缺乏方法的参数说明,这个问题为什么不首先从公司内部去解决,为什么要拿这个问题来为难程序员?
解决方案十二:
引用3楼ytmf007的回复:

把dll引用进去,自然能看到各个方法的提示了

正确
解决方案十三:

解决方案十四:
利用DLL和Lib文件就可以用C++再次封装了,就是用C++把这个函数再次封装一次,把他封装成C#可以很方便调用的定义格式到C++区找人封装,给出接口,就好调用了。
解决方案十五:
引用13楼chzadm的回复:

利用DLL和Lib文件就可以用C++再次封装了,就是用C++把这个函数再次封装一次,把他封装成C#可以很方便调用的定义格式到C++区找人封装,给出接口,就好调用了。

这方面我也有个小例子:但是楼主的问题好像不是这个吧……他并非不知道怎么使用P/Invoke。他是对于DLL文件没有足够的信息。建议好好看看楼主的问题描述。
解决方案:
不是有个叫对象浏览器的东东吗
解决方案:
引用15楼dongxinxi的回复:

不是有个叫对象浏览器的东东吗

这个玩意可以看到
解决方案:
用VC6的DEPENDS.EXE工具,可以查看dll所有导出函数和参数,你再用平台调用,互操作来解决你的问题!
解决方案:
只有函数名,没得参数,不得行。只有试试dll反编译工具看能不能找到函数参数等
解决方案:
[DllImport(...)]
解决方案:
如果dll能添加引用,直接就能查看如果不能添加引用,只能靠猜用depends打开如果只有函数名,那是_cedcl的c函数,猜都没法猜如果函数名前有下划线,后边有个@接数字,是_stdcall的c函数,@后边的数字是参数总字节如果函数后边有一堆乱码的,右键有个选择不修饰c++函数,点了就能显示出参数类型
解决方案:
该回复于2012-02-26 14:14:25被版主删除

时间: 2024-09-29 08:09:36

C#调用DLL问题的相关文章

在ASP文件中调用DLL

在ASP文件中调用DLL 动态联接库(DLL)是加快应用程序关键部分的执行速度的重要方法,但有一点恐怕大部分人都不知道,那就是在ASP文件也能通过调用DLL来加快服务器的执行速度,下面我简单的介绍一下在ASP文件调用DLL的步骤. 首先,必须得有DLL文件,本例是通过VB5.0创建ActiveX DLL文件,这个文件模拟了一个掷色子的过程. 在VB5.0的环境下,新建一个工程,并双击新建工程窗口中ActiveX DLL图标,VB将自动为项目添加一个类模块,并将该项目类型设置为ActiveX DL

在ASP文件调用DLL

动态联接库(DLL)是加快应用程序关键部分的执行速度的重要方法,但有一点恐怕大部分人都不知道,那就是在ASP文件也能通过调用DLL来加快服务器的执行速度,下面我简单的介绍一下在ASP文件调用DLL的步骤.    首先,必须得有DLL文件,本例是通过VB5.0创建ActiveX DLL文件,这个文件模拟了一个掷色子的过程.   在VB5.0的环境下,新建一个工程,并双击新建工程窗口中ActiveX DLL图标,VB将自动为项目添加一个类模块,并将该项目类型设置为ActiveX DLL.在属性窗口将

C#使用技巧--调用DLL

技巧 使用C#时不免用调用别的DLL,如WIN32的API和自己以前做的DLL, C#调用DLL很像VB,下面讨论的C#调用DLL的方式. 看看下面的例子,演示了怎么定义DLL函数接口 public class Utility {    [DllImport("kernel32", EntryPoint="CreateDirectory", CallingConvention=CallingConvention.StdCall]    public static e

java中如何调用DLL方法

前段时间项目需要使用调用DLL来控制POS机外设,如钱箱和小票打印机.顾客显示屏等,于是,我便开始了java调用DLL中的方法的探索,事实上,网上的例子还是很多的,一些外部包的例子也有很多,但每个人的实际情况都有所不同,尽管只是一个很简单的调用,也花了我不少时间,在这里分享一下我的经验吧. 我是通过一个外部的JAR包来间接来获得DLL文件的句柄 的,它就是jacob了,这是java com brige的简写,呵呵, 这个名称起得非常形象吧,我用的版本是jacob 1.9的,你可以到它的官方网站去

在C#中如何创建和调用DLL

一.写在前面 C# 语言是一种简单但功能强大的编程语言,用于编写企业应用程序. C# 语言从C和C++语言演化而来,在语句.表达式和运算符方面使用了许多C++ 功能. C# 语言在类型安全性.版本转换.事件和垃圾回收等方面进行了相当大的改进和创新. C# 语言提供对常用API 样式(如 .NET 框架.COM.自动化和 C 样式 API 等)的访问. 和大多数程序员一样,你一定使用过DLL.也一定曾感受到它的带给你程序设计和编码上的好处.我想和大家探讨一个主题:如何利用C#创建和调用DLL(动态

jna-使用JNA或者JNI调用dll的问题

问题描述 使用JNA或者JNI调用dll的问题 我有一个dll文件,是厂家给的二次开发SDK,当我使用JNI调用的时候出现如下提示: System.loadLibery("Basic"); 提示:Can't load this .dll (machine code=0x0) on a IA 32-bit platform 但是当我使用JNA调用的时候提示找不到模块 dll文件我已经放在了system32.bin.项目路径下,程序能找到dll文件的,但是调用的时候不能调用,请问什么情况啊

jna dll-java 用jna调用dll库问题

问题描述 java 用jna调用dll库问题 昨天接手一个新项目,是关于java调用dll的,用jna实现,在我本机上运行成功,今天换了台电脑,就出现了EXception in main thread java.lang.UnsatisfiedLinkError UNable to load library..........请问有谁知道原因啊?急. 解决方案 dll已经放到system32 下了,还是一样出错 解决方案二: 目测是需要加载的dll位置不对 你再看看啦 解决方案三: 使用JNA通

请教JNative 调用DLL的最佳方式

问题描述 最近做一个项目需要跟硬件打交道,而硬件开发商只提供了一个DLL对硬件进行操作,于是我就用JNative对DLL中定义的函数进行调用,目前已知的调用方法是JNative native = new JNative("DELL Name","methodName");其它的构造忽略,在这种情况下,已创建了一个JNative的实例,并且要调用的方法也已跟这个实例绑定了,也就是说这个native只能调用指定的methodName,要想调用DLL中其它方法,还得重新实

动态电用dll出错-动态调用Dll出错,服务模式

问题描述 动态调用Dll出错,服务模式 用MFC开发一个服务程序,服务程序在应用模式下,动态调用dll正常,然而变成服务模式,会导致服务停止.请问这是怎么回事,请大神指点. 解决方案 主要是你服务运行情况下,进程权限会变高,同时不能直接访问一些用户目录等.服务运行在SESSION0,这个可能会导致你的DLL处理有问题.你需要检查一下DLL的内部代码逻辑 解决方案二: http://www.cnblogs.com/duanshuiliu/archive/2012/07/05/2577402.htm

调用dll文件,本应该创建该文件,但是在指定文件夹中并未显示出该文件

问题描述 调用dll文件,本应该创建该文件,但是在指定文件夹中并未显示出该文件 string a= "D://nihao.docx"; Char[] result = new Char[1024]; int check; check = CPPDLL.createCombinationFile(a.ToCharArray()); //创建该文件,成功返回0,运行时返回0,但在指定目录下并未出现该文件 check = CPPDLL.writeCombinationFile(a.ToCha