我有一个用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'也许这是一个问题
答案 0 :(得分:0)
这是一个有趣的难题,因为您通常会运行MATLAB或其他一些COM接口语言来控制VISSIM,它会在模拟开始时加载您的自定义DLL。在您的情况下,您希望DLL在VISSIM启动模拟后运行MATLAB。
我认为您最好的方法是使用第一种方法,即标准的通信方式,但是要进行分散的数据交换。一种解决方案可能是让MATLAB启动VISSIM,它将在模拟开始时加载DLL。 DLL可以将数据发送到数据库,XML文件,文本文件或其他数据容器。 MATLAB需要监视数据容器的更新并发送给VISSIM。这会有点慢,但应该有效。
我有另一个想法,但需要一点研究。如果您想讨论,请与我联系。在过去的七个月里,我一直在使用MATLAB,R,C ++和C#积极开发VISSIM解决方案。