当前位置:编程学习 > C#/ASP.NET >>

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引用进去,自然能看到各个方法的提示了


正确 --------------------编程问答-------------------- http://topic.csdn.net/u/20110628/23/238ff951-a3eb-42e7-8956-836b6210e7cd.html
--------------------编程问答-------------------- 利用DLL和Lib文件就可以用C++再次封装了,
就是用C++把这个函数再次封装一次,把他封装成C#可以很方便调用的定义格式
到C++ 区找人封装,给出接口,就好调用了。 --------------------编程问答--------------------
引用 13 楼 chzadm 的回复:
利用DLL和Lib文件就可以用C++再次封装了,
就是用C++把这个函数再次封装一次,把他封装成C#可以很方便调用的定义格式
到C++ 区找人封装,给出接口,就好调用了。


这方面我也有个小例子:
http://blog.csdn.net/xinyaping/article/details/7288325


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

这个玩意可以看到 --------------------编程问答-------------------- 用VC6的DEPENDS.EXE工具,可以查看dll所有导出函数和参数,
你再用平台调用,互操作来解决你的问题! --------------------编程问答-------------------- 只有函数名,没得参数,不得行。只有试试dll反编译工具看能不能找到函数参数等 --------------------编程问答-------------------- [DllImport(...)] --------------------编程问答-------------------- 如果dll能添加引用,直接就能查看
如果不能添加引用,只能靠猜
用depends打开
如果只有函数名,那是_cedcl的c函数,猜都没法猜
如果函数名前有下划线,后边有个@接数字,是_stdcall的c函数,@后边的数字是参数总字节
如果函数后边有一堆乱码的,右键有个选择 不修饰c++函数,点了就能显示出参数类型 --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,