好的,我有一个使用 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/