C# 加载 C++ DLL - 退出时出现问题

标签 c# c++ dll dllimport exit

好的,我有一个使用 C++ DLL 的 C# 用户界面。该DLL实际上是一个OpenGL/SDL游戏。 游戏结束后,它会返回到 C# UI。据我所知,这一切都运行良好,而且是正确的。

当我尝试退出实际程序时,问题就出现了。 C# 表单关闭,但很快就会出现一个错误,这是相当难以描述的。我认为这与 DLL 有关,也许它仍然是打开的?如何确保 DLL 已正确关闭?或者你如何将它们整合在一起?

我按如下方式打开 DLL:

    [DllImport("AsteroidGame.dll")]
    public static extern int EntryPoint();

    private void rungame()
    {
            EntryPoint();
    }

提前致谢。

编辑

错误只是说:

vshost32.exe 已停止工作

最佳答案

当应用程序退出时,Windows 会卸载该 dll。在此过程中,dll 的静态变量将被破坏。如果您的游戏没有正确结束并且某些循环仍在向例如发送事件一个静态类,该类又将它们路由到您的 C# UI 中,您可能会收到此类错误。

首先,您应该在退出 C# UI 之前检查是否调用了游戏引擎的所有清理例程。如果这没有帮助,您需要进一步调试非托管代码。

约鲁斯, 阿洛伊斯·克劳斯

关于C# 加载 C++ DLL - 退出时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5889821/

相关文章:

c# - 文字换行以适合一定比例(不是大小)的矩形

c# - 无法在 Visual Studio 中键入

c++ - 如何为用户提供给定boost::spirit语法的自动完成建议?

c++ - 能否从 DLL 中动态调用对象?

c++ - 过程入口点无法位于动态链接库 Core.dll 中

c# - 在启动 TCP 服务器之前如何优雅地启动 C# TCP 客户端

android - 删除 unsigned char* 缓冲区

c++ - 为什么只能在头文件中实现模板?

windows - 如果加载它的 DLL 被卸载,DLL 是否会被删除?

c# - 如何在并发字典中实现 tryAdd 多个条目?