问题描述
新学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被版主删除