【问题标题】:Calling MATLAB from a DLL从 DLL 调用 MATLAB
【发布时间】:2016-07-07 22:43:26
【问题描述】:

我有一个用 C++ 编写的 DLL,用于修改 VISSIM(交通模拟器)中的参数。在这个 DLL 中,我想调用 MATLAB 来发送数据、执行 MATLAB 函数并将数据返回到 DLL。这一切都发生在 IDE 之外,因为 VISSIM 会根据需要调用 DLL。

我有 (1.) 一个可以正确修改 VISSIM 参数的工作 DLL 和 (2.) 一个可以打开 MATLAB 引擎的工作 .cpp 程序(这两个程序目前是分开的 - 彼此独立)。

如何组合这两个程序,以便从现有的 DLL 调用 MATLAB 引擎?将 .cpp MATLAB 引擎程序简单地复制粘贴到 DLL 中不起作用(我还修改了 DLL 项目属性以包含必要的 MATLAB 库/目录/路径,就像在 .cpp MATLAB 引擎程序属性中所做的那样)。

注意:.cpp MATLAB 引擎程序使用“stdafx.h”成功构建,但是当复制到 DLL 然后构建时,我收到致命错误 C1083:无法打开包含文件:“stdafx.h”也许这是一个问题?

【问题讨论】:

    标签: c++ matlab dll ide matlab-engine


    【解决方案1】:

    这是一个有趣的困境,因为您通常会运行 MATLAB 或其他一些 COM 接口语言来控制 VISSIM,一旦仿真开始,VISSIM 就会加载您的自定义 DLL。在您的情况下,您希望 DLL 在 VISSIM 开始仿真后运行 MATLAB。

    我认为您最好的方法是使用第一种方法,即标准的通信方式,但要进行分散的数据交换。一种解决方案可能是让 MATLAB 启动 VISSIM,它会在仿真开始时加载 DLL。 DLL 可以将数据发送到数据库、XML 文件、文本文件或其他数据容器。 MATLAB 需要监控数据容器的更新并发送到 VISSIM。这会有点慢,但应该可以。

    我有另一个想法,但需要进行一些研究。如果您想讨论,请与我联系。在过去的七个月里,我一直在使用 MATLAB、R、C++ 和 C# 积极开发 VISSIM 解决方案。

    【讨论】:

    • 感谢您分享您的想法。由于我是一个初学者程序员,我很难弄清楚接口架构。更详细的谈话会很有帮助。请查看我的个人资料以获取我的电子邮件,因为我找不到您的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    相关资源
    最近更新 更多