c++ - 将从 MATLAB(Simulink) 生成的 native C++ dll 加载到 Unity3d 中

标签 c++ dll unity3d native simulink

我是一名开发严肃游戏的游戏开发者。由于 MATLAB (Simulink) 模型,我进行了一些数据模拟,该模型是由现在离开团队的人创建的。所有这些数据模拟都会生成有用的数据,并允许我在需要时查询和检查变量。我需要使用此模型构建游戏。所以我使用 Simulink 代码生成器在 C++ 中为我的模型生成代码。这是 native C++ 并且是过程性的。重写的代码量很大,因此我避免这样做。我需要在我开发游戏的引擎 Unity3d 中使用此代码。

长话短说。我需要在 Unity3d 中加载原生 C++ dll(由 Simulink 生成)。

我尝试过的:

  1. 我尝试使用 Unity3d 的原生插件 API。我有专业版,它似乎没有检测到 dll,只是抛出异常。我正在使用 extern 关键字来公开所需的变量,但仍然没有运气。

  2. 我尝试按照本教程 (http://blogs.abo.fi/alexeevpetr/2011/11/18/simplified-building-simulink-generated-c-code-in-visual-studio/) 进行操作,但它会抛出错误并且无法构建,这可能是因为 MATLAB 的版本。

  3. 我也考虑过使用包装器,但这意味着我需要重新编写大部分代码。

最佳答案

我从未在 Unity 中使用过 native dll,但我猜您总是可以尝试使用几种代码桥接方法中的一种从 C# 调用 C++ 代码。那么编写 C++/CLI 包装器怎么样?它不会强制你重写任何东西。它提供了对非托管代码的托管访问,无论如何,这是一种很有用的学习技术。

关于c++ - 将从 MATLAB(Simulink) 生成的 native C++ dll 加载到 Unity3d 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20340067/

相关文章:

c++ - 即使每个语句都是 "SELECT",SQLite3 是否会更改数据库

c++ - 在 async_read 处理程序在服务器中返回错误后调用 boost::asio::tcp::socket 方法

c# - 构建 FFmpeg.NET .dll

c++ - 如何将动态 dll 转换为静态库?

c# - 如何动态调用具有已知参数基类型的委托(delegate)?

c++ - 严格别名和 std::array 与 C 风格数组

c++ - 在C++中使用 “using”

c++ - 我是否需要在显式加载的共享库之间隐式链接以进行交互?

c# - 压缩 if-elseif-else 语句以节省比较

c# - OnTriggerEnter() 在开始时被调用