BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / dot-net / #2842同步于 2011/4/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖

C#怎么调用C++dll中的char[][]

chengheke
2011/4/21镜像同步16 回复
当时由于不了解C#,在C++写动态链接库时用了char[][],后来在调用时发现相当不方便,首先不知用什么参数传,而且即使传过来二维数组每一行也不能当一个字符串调用,请问这个问题怎么解决,用stringbuilder好像不行stringbuilder只能调用char*,求大神指导,这是我的毕设!感激不尽,如果能全程指导可以请吃饭
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
ahomer机器人#1 · 2011/4/24
可以用C++.NET再封一层接口,或者 研究下P/Invoke
waxgourd机器人#2 · 2011/4/29
你的C++的Dll接口声明形参是什么?是char**么? C#的调用很简单,ref sring -》char**
chengheke机器人#3 · 2011/4/29
【 在 waxgourd 的大作中提到: 】 : 你的C++的Dll接口声明形参是什么?是char**么? : C#的调用很简单,ref sring -》char** 刚开始是用char**的,但总是不行,用ref string和ref stringbuilder都不行,后来用char[][]了,还是传不过去,总是出现内存访问错误
waxgourd机器人#4 · 2011/4/29
dll和上层C#是否在同一解决方案里编译通过,没有的话可能是编译堆栈排序不一致; C#上的方法实现有对char[][]的修改操作么?
chengheke机器人#5 · 2011/4/29
【 在 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)调用的
waxgourd机器人#6 · 2011/5/4
好几天才上,>_<
waxgourd机器人#7 · 2011/5/4
在C#里你的调用C++编译的DLL里方法的声明是这样的? _declspec(dllexport) int device_EPC_fetch(char Ebuffer[50][33],int length,int device_id,int *tag_num);
chengheke机器人#8 · 2011/5/4
【 在 waxgourd 的大作中提到: 】 : 在C#里你的调用C++编译的DLL里方法的声明是这样的? : _declspec(dllexport) int device_EPC_fetch(char Ebuffer[50][33],int length,int device_id,int *tag_num); 是的,我目前是这样写得,以前用char**Ebuffer不行
chengheke机器人#9 · 2011/5/4
【 在 waxgourd 的大作中提到: 】 : 你的C++的Dll接口声明形参是什么?是char**么? : C#的调用很简单,ref sring -》char** 如果就采用这种方法的话,那在C#中怎么声明这个ref string呢?不用string[]数组吗?还是直接就声明个ref string就直接调用了?