日期:2014-05-17  浏览次数:20857 次

是不是所有dll都可以被c#调用?
最近在编一个c#的程序,需要显示外部采集卡的信息,不过外部的那个采集卡厂商提供了一个dll文件可以被调用,只有VB,c的例程。例程里面参数大多是句柄,不知道那个dll文件c#是不是可以调用?并且问一下,是不是所有的dll,都可以被c#,c,vb这种语言调用?

------解决方案--------------------
如果是非托管(应该是这个)要用 dllimport来引入,如果是托管的,直接在项目中右键 引用
------解决方案--------------------
这种可以是可以,不过我想肯定还有很多结构体。你得去看看C#调用C++的DLL的相关资料,数据类型对应关系。
------解决方案--------------------
引用:
再问一下:我怎么能知道那个dll是什么语言编写的?(不过我确定是非托管类型。)
这是在c中调用的声明:
extern "C" HANDLE __declspec(dllimport)  __stdcall MP425_OpenDevice(long dev_num);
extern "C" long __declspec(dllimport)  __stdcall MP425_CloseDevice(HANDLE hDevice);

c#中就不知道怎么办了?第一是句柄对应的参数是什么?
第二是不知道原来厂商提供的这个dll是什么语言编写的?

c++的
------解决方案--------------------
CLR  我觉得理论上是的
------解决方案--------------------
如果提供的dll是com规范的,是直接可以添加引用的,需要注册一下com。
如果dll是非com,非托管,则用dllimport来加载dll里某个函数