c#调用c++详细方法

ntjerome 2009-10-30 09:04:38
目前手上有C++的接口文件为:ybinterface.dll,辅助动态库包括:MCIF.dll、SICARD.dll等,还包括MCIF.ini等配置文件!
这里要实现的是“读CPU卡”
以下是接口文档原文:
函数原型:int ReadCard (char* Output);
参数说明:Output:出参,成功时,返回卡号信息,格式为“卡号+’|’+’$’”,例“200000001|$”,失败时返回错误信息。
返回值:
0:成功
非0:失败,原因参见错误信息。


我是这么写的:
[DllImport("ybinterface.dll", CharSet = CharSet.Auto,EntryPoint="ReadCard")]
public static extern int ReadCard(out string Output);
不知道这么写对不对!

具体怎么写让窗体上的textbox.text显示读出的卡号,它文档里又说成功时返回卡号,怎么又说成功时返回值为0,不成功为非0?
请高手指点!
...全文
93 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyerwing 2009-10-30
  • 打赏
  • 举报
回复
关注
ntjerome 2009-10-30
  • 打赏
  • 举报
回复
顶起,没人知道吗?
ntjerome 2009-10-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 captainym 的回复:]
不需要“out”

[DllImport("ybinterface.dll", CharSet = CharSet.Auto,EntryPoint="ReadCard")]
public static extern int ReadCard(string Output); 

使用的时候:
StringBuilder builder = new StringBuilder(255);
int result = ReadCard(builder);
if(0!=result)
{
  string errorMsg=builder.toString();
}
[/Quote]


编译时提示:
与“ReadCard.ReadCard(string)”最匹配的重载方法具有一些无效参数”;
参数“1”: 无法从“System.Text.StringBuilder”转换为“string“”
captainym 2009-10-30
  • 打赏
  • 举报
回复
不需要“out”

[DllImport("ybinterface.dll", CharSet = CharSet.Auto,EntryPoint="ReadCard")]
public static extern int ReadCard(string Output);

使用的时候:
StringBuilder builder = new StringBuilder(255);
int result = ReadCard(builder);
if(0!=result)
{
string errorMsg=builder.toString();
}

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧