Я использую чужой код для своих целей. Этот код использует файл .mex64
, сгенерированный из кода C
. В этом файле есть оператор печати - он что-то отображает в командном окне. Мне нужно изменить текст этого заявления. Я мог бы перекомпилировать, но у меня нет полного исходного кода.
Когда я открываю файл mex64
в текстовом редакторе, я вижу текст для печати в виде обычного текста. Однако, если я пытаюсь изменить его и запустить, Matlab вылетает с системной ошибкой -
Abnormal termination:
Access violation
Вот как я пытался воссоздать проблему. Я написал следующий код -
#include <stdio.h>
#include "C:\Program Files\MATLAB\R2017b\extern\include\mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
main();
return;
}
int main(){
printf("Hello\n");
}
Сгенерированный файл mex64
работает нормально - печатает текст «Hello». Но когда я нашел слово «Hello» в файле mex64
и изменил его на «Hell», оно рухнуло, как описано выше. Похоже, что в MATLAB есть какая-то проверка целостности, которая не проходит.
Может кто-нибудь объяснить, что происходит?
Есть ли способ как-то изменить файл mex64
и успешно запустить его?