| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 805 人关注过本帖, 1 人收藏
标题:是不是所有的dll都可以被c#调用?
只看楼主 加入收藏
wyc199288
Rank: 2
等 级:论坛游民
帖 子:17
专家分:15
注 册:2014-1-4
结帖率:60%
收藏(1)
已结贴  问题点数:20 回复次数:8 
是不是所有的dll都可以被c#调用?
最近在编一个c#的程序,需要显示外部采集卡的信息,不过外部的那个采集卡厂商提供了一个dll文件可以被调用,只有VB,c的例程。例程里面参数大多是句柄,不知道那个dll文件c#是不是可以调用?并且问一下,是不是所有的dll,都可以被c#,c,vb这种语言调用?

多谢各位提点!
搜索更多相关主题的帖子: 采集卡 信息 
2014-01-20 22:23
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
应该可以

DO IT YOURSELF !
2014-01-21 05:47
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
这个不一定 dllimport这种方式如果不支持的话 那就是不支持了

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2014-01-21 08:28
wyc199288
Rank: 2
等 级:论坛游民
帖 子:17
专家分:15
注 册:2014-1-4
收藏
得分:0 
回复 3楼 wangnannan
原来那个dll可以被c调用,不知道c#是否可以?
2014-01-21 10:23
wyc199288
Rank: 2
等 级:论坛游民
帖 子:17
专家分:15
注 册:2014-1-4
收藏
得分:0 
回复 2楼 wp231957
原来那个dll可以被c调用,不知道c#是否可以?stdcall的
2014-01-21 10:24
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
        [DllImport("ecg2jpg.dll")]
        private static extern int ecg2jpg(string ecgPath, string jpgPath);
抛砖引玉 你可以照我写的这个例子试试 只有自己试了才知道 不懂要及时发帖 版主都会帮助你

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2014-01-21 10:54
wyc199288
Rank: 2
等 级:论坛游民
帖 子:17
专家分:15
注 册:2014-1-4
收藏
得分:0 
回复 6楼 wangnannan
我就是已经编过了才发问的。
再问一下:我的那个dll是厂家提供的,在c中可以调用,是这样声明的:extern "C" HANDLE __declspec(dllimport)  __stdcall MP425_OpenDevice(long dev_num);
extern "C" long __declspec(dllimport)  __stdcall MP425_CloseDevice(HANDLE hDevice);
分别一个是打开设备,一个是关闭设备。参数都涉及到句柄。

但是我在c#中也是按你的方式调用却总是没反应(注:c中已经成功调用。)  我想是句柄的原因,在c中的handle在c#中是对用intptr还是int?
大神求解答,多谢!
2014-01-21 12:06
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:20 
IntPtr 可以用IntPtr 代替int

例如这样
程序代码:
调用API 函数SendMessage 发送WM_CLOSE 消息。


DllImport("User32.dll",EntryPoint="SendMessage")] 

  

private static extern int SendMessage( int hWnd,int Msg,int wParam,int lParam); 

  

const int WM_CLOSE = 0x10;  

SendMessage(那个程序的窗口句柄, WM_CLOSE, 0, 0);


 

[ 本帖最后由 wangnannan 于 2014-1-21 14:02 编辑 ]

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2014-01-21 14:00
wyc199288
Rank: 2
等 级:论坛游民
帖 子:17
专家分:15
注 册:2014-1-4
收藏
得分:0 
回复 7楼 wyc199288
经过大神指导,我顿悟了!多谢!
2014-01-22 12:14
快速回复:是不是所有的dll都可以被c#调用?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027227 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved