我在linux下编写了一个自动分级程序。有几个在MATLAB中编写的评分程序,所以我想将它们全部绑在一起,并让学生运行程序来完成作业,并让他们选择作业。我正在使用C++主程序,然后将mcc编译的MATLAB库链接到它。MATLAB任意代码执行
具体来说,我的程序读取了各种matlab程序名称和其他信息的配置文件。然后它使用该信息向学生呈现选择。所以,如果一个任务改变,被添加或删除,那么你所要做的就是改变配置文件。
这个想法是,接下来,程序调用已经用mcc编译的正确的matlab库。但是,这意味着如果分级机构发生变化,库必须重新编译。更糟糕的是,如果添加或删除平地机,整个程序必须重新编译。所以,我希望一个简单的,不变的matlab库函数直接调用分级器m文件。我目前有这样一个库,它使用从主程序传递给它的字符串的eval。
问题是,当我这样做时,显然,mcc吸收了分级器m代码本身;编译后更改分级器m代码不起作用。我想这不会发生。它引起了我的注意,Mathworks可能不希望我能够做到这一点,因为它可以完全绕过matlab。这不是我的意图,我会很高兴需要完整的matlab安装解决方案。
我可能的解决方案是为主程序使用mex文件,或让主程序调用mcc库,然后调用mex文件,然后调用适当的分级器。我对第一种解决方案犹豫不决的原因是,我不确定我需要对代码进行多少更改才能使其工作;我的代码是C++,而不是C,我认为这会让事情变得更加复杂。然而,第二种解决方案可能会更加复杂,并最终会遇到同样的问题。
那么,对这种情况有什么想法?我应该怎么做?