C#调用C++写的DLL中返回字符串的问题!

scbeans 2003-09-11 12:00:45
非托管DLL中:
extern "C" SIMPLELIBRARY_API int fnSimpleLibrary(char *name);

SIMPLELIBRARY_API int fnSimpleLibrary(char *name)
{
strcpy(name, "aaaa");
return 0;
}

////////////////////////////////////////

C#代码:
[DllImport("SimpleLibrary.dll", EntryPoint="fnSimpleLibrary", CharSet=CharSet.Ansi)]
public static extern int fnSimpleLibrary(ref StringBuilder name);

调用:
StringBuilder name = new StringBuilder(64);
SimpleDll.fnSimpleLibrary(ref name);

结果程序当掉,说是:
未处理的“System.NullReferenceException”类型的异常出现在 TestDll.exe 中
其他信息:未将对象引用设置到对象的实例。


把StringBuilder改成string也不行,这个问题怎么解决啊!!!!
...全文
458 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
linaren 2003-09-11
  • 打赏
  • 举报
回复
StringBuilder 本身就是传址的,所以没必要ref
myall2002 2003-09-11
  • 打赏
  • 举报
回复
[DllImport("SimpleLibrary.dll", EntryPoint="fnSimpleLibrary", CharSet=CharSet.Ansi)]
public static extern int fnSimpleLibrary(StringBuilder name);
//去掉ref就行了!!
scbeans 2003-09-11
  • 打赏
  • 举报
回复
哇,今天运气不错,碰上两位好心的高手!!多谢!

接分吧!

110,534

社区成员

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

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

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