c#调用c++ dll出现“尝试读取或写入受保护的内存”

嫣然傻笑 2018-12-07 12:00:45
C++ 原型方法
我在C# 里面使用的时候,求解决方案!
...全文
746 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
一段formerly 2018-12-10
  • 打赏
  • 举报
回复
ref string 换成stringBuild有试过吗?
weixin_44042561 2018-12-10
  • 打赏
  • 举报
回复
同样问题已解决 3Q
嫣然傻笑 2018-12-10
  • 打赏
  • 举报
回复
谢谢 hez2010,按照你给出的定义方式可以了!
hez2010 2018-12-08
  • 打赏
  • 举报
回复
你要给StringBuilder事先分配空间啊。

[DllImport("xxxxxx.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "CommPosProcess", CharSet = CharSet.Ansi)]
static extern int CommPosProcess(string pInput, [MarshalAs(UnmanagedType.LPStr)]StringBuilder pOutput);



调用的时候:

var sb = new StringBuilder(256); //分配256字节的空间,可以自己调整这个大小
var ret = CommPosProcess(xxx, sb);


wanghui0380 2018-12-07
  • 打赏
  • 举报
回复
ref string 换成stringBuild
xuzuning 2018-12-07
  • 打赏
  • 举报
回复
result 应有足够的初始化空间
嫣然傻笑 2018-12-07
  • 打赏
  • 举报
回复 1
换成 stringBuild 试过的,不行

111,098

社区成员

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

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

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