C++动态库被C#调用中,动态库中执行了析构函数就抛出“Invalid Address specified to RtlFreeHeap”错误

Shimata 2009-12-17 12:26:14
我有个项目,手头上有个C++的DLL,要求用C#做界面。我用托管C++做中间层封装DLL里的函数。

现在调用DLL中的初始化函数,其中只要遇到析构函数,内存释放就调到一个断言错误,说Invalid Address specified to RtlFreeHeap(0xXXXXXXXX,0xXXXXXXX)。

在C#项目属性里我已经开启了“Allow unsafe code”选项,可问题依旧,请问有没有高手知道该怎样解决?
...全文
155 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shimata 2009-12-17
  • 打赏
  • 举报
回复
找到原因了,因为我链接了msvcrt.lib,去掉就好了。
Shimata 2009-12-17
  • 打赏
  • 举报
回复
我只是通过一个托管C++DLL中的借口调用了非托管C++DLL里的一个初始化函数 Init(),没有参数,所有内存释放,析构都是Init()内部进行的。
wuyq11 2009-12-17
  • 打赏
  • 举报
回复
无效的地址指定RtlFreeHeap
是否参数调用问题
Shimata 2009-12-17
  • 打赏
  • 举报
回复
顶一下
ludeli2004 2009-12-17
  • 打赏
  • 举报
回复
帮顶

110,535

社区成员

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

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

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