C# 调用静态C++库 C# C++ 静态库 链接 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不能直接使用静态库,要么写点代码编译成DLL,要么用C++/CLI 先向楼主道个歉,借用你的帖子問个问题,没分了,哎VC的接口Bool GetKeyPadStatus( byte * addr, char * pstatus, char * pnumber,byte* ptocounter);C# 调用 [DllImport("KeyPad.dll", CallingConvention = CallingConvention.StdCall)] public static extern bool GetKeyPadstatus(ref byte addr, ref string pstatus, ref string pnumber, ref byte ptocounter); //获取终端状态函数调用函数 byte address1 = 1; //byte address2 = 2; string pstatus = "0"; //////////这个值 string pnumber = "0000"; byte mtocounter = 0;// bool temp = calldll.GetKeyPadstatus(ref address1, ref pstatus, ref pnumber, ref mtocounter); if (temp) { switch (pstatus[0]) { case '0': label7.Text = "怎么是0 零 没有获得呼叫器的状态值"; break; case 'L': label7.Text = "空闲状态,按了清除键了"; break; case 'E': label7.Text = "暂停状态,按了暂停键"; break; case 'W': label7.Text = "等待" + pnumber; break; case 'P': label7.Text = "呼叫" + pnumber; //重复呼叫 CallAndPrint(); break; case 'M': label7.Text = "转移" + pnumber + "到" + mtocounter.ToString() + "窗口"; break; case 'S': label7.Text = "正在受理" + pnumber; break; case 'U': label7.Text = "呼叫器要求派号"; byte waitnum = 100; //等待人数 calldll.setKeyPadnumber(ref address1, ref pnumber, waitnum); Thread.Sleep(120); CallAndPrint(); break; } }最后获取的pstatus 值 是 0 也就是我开始刚给他的赋值 谢谢了,帮个忙,弄了一下午了,郁闷死了 你好,这是我在查类似问题时用到的信息,希望对你有帮助http://wenku.baidu.com/view/24a53722af45b307e87197d5.html [DllImport("PCI_DMC_01.dll", EntryPoint = "_DMC_01_open")] public static extern short CS_DMC_01_open(ref short existcard);这样的调用 你好,可是用这种方式的话,在C++ dll中定义的类或者自定义类型就无法使用了 你好,可是用这种方式的话,在C++ dll中定义的类或者自定义类型就无法使用了我见过的情况是c/c++库提供c格式的api,在C#中对应进行封装使用。 C# 新手提问,应该用Socket异步,还是同步Socket+多线程方法 我想把当前正在复制哪个表在窗体上动态展示出来 C#调用C++ Com方法具有二级指针的结构体输出参数 sql查询统计难题 C#高手进__想请教一下ASP.NET website工程下的.asmx.cs文件如何去访问WebService? 重写ToString() c#入门经典和高级编程封面的那几个是谁 怎样使用正则表达式来规范c#代码格式? 判断MessageQueue是否有数据 现在有没有那家公司用C#开发 SOCKET中Read阻塞后怎么超时? 1000w以上的数据sqlserver存储方案
VC的接口
Bool GetKeyPadStatus( byte * addr, char * pstatus, char * pnumber,byte* ptocounter);C# 调用
[DllImport("KeyPad.dll", CallingConvention = CallingConvention.StdCall)]
public static extern bool GetKeyPadstatus(ref byte addr, ref string pstatus, ref string pnumber, ref byte ptocounter); //获取终端状态函数调用函数 byte address1 = 1;
//byte address2 = 2;
string pstatus = "0"; //////////这个值
string pnumber = "0000";
byte mtocounter = 0;// bool temp = calldll.GetKeyPadstatus(ref address1, ref pstatus, ref pnumber, ref mtocounter);
if (temp)
{
switch (pstatus[0])
{
case '0':
label7.Text = "怎么是0 零 没有获得呼叫器的状态值";
break;
case 'L':
label7.Text = "空闲状态,按了清除键了";
break;
case 'E':
label7.Text = "暂停状态,按了暂停键";
break;
case 'W':
label7.Text = "等待" + pnumber;
break;
case 'P':
label7.Text = "呼叫" + pnumber; //重复呼叫
CallAndPrint();
break;
case 'M':
label7.Text = "转移" + pnumber + "到" + mtocounter.ToString() + "窗口";
break;
case 'S':
label7.Text = "正在受理" + pnumber; break;
case 'U':
label7.Text = "呼叫器要求派号";
byte waitnum = 100; //等待人数
calldll.setKeyPadnumber(ref address1, ref pnumber, waitnum);
Thread.Sleep(120);
CallAndPrint();
break;
}
}
最后获取的pstatus 值 是 0 也就是我开始刚给他的赋值 谢谢了,帮个忙,弄了一下午了,郁闷死了
http://wenku.baidu.com/view/24a53722af45b307e87197d5.html
public static extern short CS_DMC_01_open(ref short existcard);
这样的调用
你好,可是用这种方式的话,在C++ dll中定义的类或者自定义类型就无法使用了
你好,可是用这种方式的话,在C++ dll中定义的类或者自定义类型就无法使用了
我见过的情况是c/c++库提供c格式的api,在C#中对应进行封装使用。