我是一名开发严肃游戏的游戏开发者。由于 MATLAB (Simulink) 模型,我进行了一些数据模拟,该模型是由现在离开团队的人创建的。所有这些数据模拟都会生成有用的数据,并允许我在需要时查询和检查变量。我需要使用此模型构建游戏。所以我使用 Simulink 代码生成器在 C++ 中为我的模型生成代码。这是 native C++ 并且是过程性的。重写的代码量很大,因此我避免这样做。我需要在我开发游戏的引擎 Unity3d 中使用此代码。
长话短说。我需要在 Unity3d 中加载原生 C++ dll(由 Simulink 生成)。
我尝试过的:
我尝试使用 Unity3d 的原生插件 API。我有专业版,它似乎没有检测到 dll,只是抛出异常。我正在使用 extern 关键字来公开所需的变量,但仍然没有运气。
我尝试按照本教程 (http://blogs.abo.fi/alexeevpetr/2011/11/18/simplified-building-simulink-generated-c-code-in-visual-studio/) 进行操作,但它会抛出错误并且无法构建,这可能是因为 MATLAB 的版本。
我也考虑过使用包装器,但这意味着我需要重新编写大部分代码。
最佳答案
我从未在 Unity 中使用过 native dll,但我猜您总是可以尝试使用几种代码桥接方法中的一种从 C# 调用 C++ 代码。那么编写 C++/CLI 包装器怎么样?它不会强制你重写任何东西。它提供了对非托管代码的托管访问,无论如何,这是一种很有用的学习技术。
关于c++ - 将从 MATLAB(Simulink) 生成的 native C++ dll 加载到 Unity3d 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20340067/