调用vc的dll 返回 char * 怎样接收??? 我快疯了!!!不揭帖不睡觉

cqzyf 2008-12-26 11:43:44
VC 的头文件这样声明的
_PORT_ char *OCode(unsigned long fIDMode,bool fReference,char *lpFileName);

我这样调用
[DllImport(@"OCode.dll")]
public static extern StringBuilder OCode(long fIDMode, bool fReference,StringBuilder s);


StringBuilder a1 = new StringBuilder("132132");

StringBuilder b1 = new StringBuilder();

b1 = OCode(2, false, ddd);
不管怎样都得不到返回值,高手给我看看,调用是否正确???

...全文
129 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ws_hgo 2008-12-27
  • 打赏
  • 举报
回复
看下
net5i 2008-12-27
  • 打赏
  • 举报
回复
注意long肯定要改成int的
net5i 2008-12-27
  • 打赏
  • 举报
回复
嗯,那搂主给出一定长度看看呢,也就是说把:
StringBuilder a1 = new StringBuilder("132132");
改成:
StringBuilder a1 = new StringBuilder(512);
看看呢?
cqzyf 2008-12-27
  • 打赏
  • 举报
回复
不行啊

net5i 2008-12-27
  • 打赏
  • 举报
回复
搂主先把C# 里的这个声明public static extern StringBuilder OCode(long fIDMode, bool fReference,StringBuilder s);
这里的long 类型改为用int类型调用,看看
EveryCase 2008-12-27
  • 打赏
  • 举报
回复
ding
sunchaohuang 2008-12-27
  • 打赏
  • 举报
回复
stringbuilder是引用类型 -- 》 char*

string类型不能作为指针用

实在不行直接设置一个不安全代码段 直接对着引用调用
ChrisAK 2008-12-27
  • 打赏
  • 举报
回复
这里没必要用stringbuilder.
stringbuilder只在需要从参数那里返回字符串的时候才用(如GetWindowText)
[DllImport(@"OCode.dll",CharSet=CharSet.Ansi)]
public static extern string OCode(int fIDMode, bool fReference,string s);
你把声明改成这样再试试.

110,571

社区成员

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

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

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