【发布时间】:2011-11-11 23:42:08
【问题描述】:
我真的需要更深入地了解如何正确设置以在我的 C++ 和 C# 代码库之间实现优雅的交互。 我想要实现的是一个用 C# 为我的游戏引擎 (C++/DX) 编写的游戏内编辑器。为此,我让 VS 将我的引擎构建为带有一些附加功能(非托管代码)的 C++ dll,以从 C# 编辑器代码库访问我的引擎所需的功能。到目前为止一切顺利。
困扰我的第一件事是我必须使用 CLR 支持构建 dll。否则 C# 出于某种原因不接受 dll。它甚至不允许我将其添加到资源中(“无法添加对 'C:\Users...\frame_work\Test\frame_workd.dll' 的引用。请确保该文件可访问,并且它是一个有效的程序集或 COM 组件。”)。
当我使用 CLR 支持构建 dll 并将其添加到 C# 中的引用时,在没有 CLR 支持的情况下重新构建,启动我的编辑器并从 dll 进行函数调用,然后我得到一个异常 HRESULT: 0x8007007E。我搜索了它,但我发现唯一的东西与依赖关系有关,但这不符合我在将 dll 添加到资源时收到的警报。
另外一点是我总是要在应用程序(.exe)和dll之间切换配置类型。在 VS C++ 中取决于我是想直接运行我的引擎还是从编辑器运行我的引擎,并且每次构建完整的项目时都是全新的。
那么,有人可以向我解释如何以正确的方式组织这个吗? C# 想要使用 CLR 支持编译 dll 的可能原因是什么?
谢谢你们。
【问题讨论】: