gpt4 book ai didi

c# - 从 C# 调用 C++ 时出现 System.AccessViolationException

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:01 26 4
gpt4 key购买 nike

我不知道为什么,但今天 myOpenID 似乎不起作用。无论如何...我有这个问题:我有一个非托管的 C++ 库 (DLL),我必须将它嵌入到现有的 C# 项目中。现在......我在托管 C++ 中创建了一个迷你包装器 (DLL),它调用库,以便我可以从 C# 代码加载它,当我从命令行 C# 项目尝试它时,它完美地工作,对吧结果、正确的行为等。

现在,当我将它加载到实际项目中时,它开始向我提供来自迷你包装器 DLL 的奇怪 System.AccessViolationException。我没有 C# 经验,也没有 Windows 下的一般托管/非托管 C++ 开发经验,我只是不明白为什么这应该在 C# 项目中工作,而不是在另一个项目中工作。

更多信息:原始库使用OGRE3D渲染引擎进行计算,而我必须使用该库的项目在引擎盖下使用OGRE,这会导致问题吗?

有什么建议吗?

最佳答案

先生,这里有一些想法供您尝试...

  1. 很难知道到底发生了什么,但我会尝试做的第一件事是从组合中删除这个托管的 c++ dll。这可能会使事情变得困惑。在这里的某个地方,感觉数据没有在托管和非托管世界之间正确编码。此外,仅仅因为它没有从控制台崩溃,并不一定意味着代码工作正常,它仍然可能会中断,只是不会以触发访问冲突的方式。我首先要看的是使用 p/invoke 直接调用你的非托管 dll,如果它坏了,你应该很快知道:

    Calling Win32 DLLs in C# with P/Invoke

  2. 可能是在混合的某个地方,该指针被移动到该指针没有意义的不同地址空间。这里有进程边界吗?

关于c# - 从 C# 调用 C++ 时出现 System.AccessViolationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2361965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com