返回信息流当时由于不了解C#,在C++写动态链接库时用了char[][],后来在调用时发现相当不方便,首先不知用什么参数传,而且即使传过来二维数组每一行也不能当一个字符串调用,请问这个问题怎么解决,用stringbuilder好像不行stringbuilder只能调用char*,求大神指导,这是我的毕设!感激不尽,如果能全程指导可以请吃饭
这是一条镜像帖。来源:北邮人论坛 / dot-net / #2842同步于 2011/4/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖
C#怎么调用C++dll中的char[][]
chengheke
2011/4/21镜像同步16 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 waxgourd 的大作中提到: 】
: 你的C++的Dll接口声明形参是什么?是char**么?
: C#的调用很简单,ref sring -》char**
刚开始是用char**的,但总是不行,用ref string和ref stringbuilder都不行,后来用char[][]了,还是传不过去,总是出现内存访问错误
【 在 waxgourd 的大作中提到: 】
: dll和上层C#是否在同一解决方案里编译通过,没有的话可能是编译堆栈排序不一致;
: C#上的方法实现有对char[][]的修改操作么?
什么叫在同一解决方案里通过?我在C#中写了调用函数,编译通过了,但运行时读的时候就出错了!_declspec(dllexport) int device_EPC_fetch(char Ebuffer[50][33],int length,int device_id,int *tag_num);每次调用这个函数就出错了,我是用device_EPC_fetch(string[] str,len,id,ref num)调用的
在C#里你的调用C++编译的DLL里方法的声明是这样的?
_declspec(dllexport) int device_EPC_fetch(char Ebuffer[50][33],int length,int device_id,int *tag_num);
【 在 waxgourd 的大作中提到: 】
: 在C#里你的调用C++编译的DLL里方法的声明是这样的?
: _declspec(dllexport) int device_EPC_fetch(char Ebuffer[50][33],int length,int device_id,int *tag_num);
是的,我目前是这样写得,以前用char**Ebuffer不行
【 在 waxgourd 的大作中提到: 】
: 你的C++的Dll接口声明形参是什么?是char**么?
: C#的调用很简单,ref sring -》char**
如果就采用这种方法的话,那在C#中怎么声明这个ref string呢?不用string[]数组吗?还是直接就声明个ref string就直接调用了?