当前位置:编程学习 > C#/ASP.NET >>

C++COM 中 char*返回值 在C#中变成sbyte,C#中如何返回字符串?

情景:
       现有一个用VC++写的第三方com组件,其中有个方法声明如下:
          char* func1(char * newVal);
      
      导入到C#中变成了这样:
          sbyte func1(ref sbyte pVal);

请教:
     调用该函数时,将一个字符串传递给该函数,如何返回一个字符串呢?

注:按@xingyuebuyu的方法可以将字符串传入函数:
”sbyte[] aa=new sbyte[100];
func1(ref aa[0]);
应该是定义sbyte数组,然后传首元素进去.ref aa[0]就相当于传的是aa的首元素的地址,然后COM组件就可以根据这个地址来访问数组中的其它元素了 “
可是传出还是不会!!!!
c++ c# COM char* sbyte --------------------编程问答-------------------- C++ char * 对应 c# string --------------------编程问答-------------------- 不是这个答案啊,是C++ COM 中的接口函数fun1返回值类型char*在C#中自动变成了sbyte,
自己选择不了C#中函数的返回值类型啊!!!
我的步骤是:
1,先用C++ ATL做一个COM,接口函数是char* func1(char * newVal);
2.在C#中调用这个COM,接口函数就自动变成sbyte func1(ref sbyte newVal);
现在的问题是没办法利用接口函数返回一个字符串了!!!

--------------------编程问答--------------------
引用 楼主 shenhongminlvjian 的回复:
...
char* func1(char * newVal);


COM接口很少这样写的,权责不清。
最好不要用这个"第三方com组件"。
--------------------编程问答-------------------- 那能问您一下,我想实现一个函数,这是安排的任务,必须用COM!!!
接口函数传入参数是字符串,函数处理之后再传出一个字符串,那接口应该怎么写呢??
如果没有其它方法,必须这么写接口那怎么返回字符串呢 --------------------编程问答-------------------- 我也同样遇到这个问题,求大牛解答 --------------------编程问答-------------------- com 接口一般要返回 hresult 而非 char* 等,如果要返回,需要在接口方法内,用retval 修饰
--------------------编程问答-------------------- C++编程一个原则就是不要返回局部变量的指针,不知道你是不是这种情况。不管怎么返回指针都是不可取的。很简单,参数传入指针和大小,又方便又安全;如果在函数内分配(一般不建议,如果真这么做了,也要提供释放的接口),可以传入指针的指针,返回分配的大小。我说的返回是参数中返回。 --------------------编程问答-------------------- COM的字符串不是char*,
BSTR
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,