我在linux下編寫了一個自動分級程序。有幾個在MATLAB中編寫的評分程序,所以我想將它們全部綁在一起,並讓學生運行程序來完成作業,並讓他們選擇作業。我正在使用C++主程序,然後將mcc編譯的MATLAB庫鏈接到它。MATLAB任意代碼執行
具體來說,我的程序讀取了各種matlab程序名稱和其他信息的配置文件。然後它使用該信息向學生呈現選擇。所以,如果一個任務改變,被添加或刪除,那麼你所要做的就是改變配置文件。
這個想法是,接下來,程序調用已經用mcc編譯的正確的matlab庫。但是,這意味着如果分級機構發生變化,庫必須重新編譯。更糟糕的是,如果添加或刪除平地機,整個程序必須重新編譯。所以,我希望一個簡單的,不變的matlab庫函數直接調用分級器m文件。我目前有這樣一個庫,它使用從主程序傳遞給它的字符串的eval。
問題是,當我這樣做時,顯然,mcc吸收了分級器m代碼本身;編譯後更改分級器m代碼不起作用。我想這不會發生。它引起了我的注意,Mathworks可能不希望我能夠做到這一點,因爲它可以完全繞過matlab。這不是我的意圖,我會很高興需要完整的matlab安裝解決方案。
我可能的解決方案是爲主程序使用mex文件,或讓主程序調用mcc庫,然後調用mex文件,然後調用適當的分級器。我對第一種解決方案猶豫不決的原因是,我不確定我需要對代碼進行多少更改才能使其工作;我的代碼是C++,而不是C,我認爲這會讓事情變得更加複雜。然而,第二種解決方案可能會更加複雜,並最終會遇到同樣的問題。
那麼,對這種情況有什麼想法?我應該怎麼做?