Ошибка с командой mex -g (без оптимизации)
Я пытаюсь изменить файл в сценарии. Файл C, который должен быть mexed, генерируется на одном из предыдущих шагов сценария перед тем, как он будет mexed.
Когда я использую строку ниже в сценарии, все работает нормально, и сценарий выполняется успешно.
mex (strcat(component_name,'_s_func','.c'));
но когда я добавляю ту же строку ниже с
mex -g (strcat(component_name,'_s_func','.c'));
это дает мне ошибку
C:\PROGRA~2\MATLAB~1\BIN\MEX.PL: Ошибка: '(strcat(имя_компонента,_s_func,.c))' не найдено.
Любая идея, почему не удается найти тот же файл при использовании -g
в то время как он может найти его при использовании без -g
вариант?
2 ответа
Проблема с вашим утверждением в том, что с синтаксисом
mex -g [...]
MATLAB предполагает, что вы звоните mex
со строковыми аргументами '-g'
а также '[...]'
так что предполагается, что ваш файл называется (strcat(component_name,'_s_func','.c'))
и не выполняет команду.
Вы можете использовать решение, которое вы разместили с eval
так как вы снова называете это строками '-g'
а также 'filename.c'
, Другой возможностью было бы использовать синтаксис
mex('-g',strcat(component_name,'_s_func','.c'));
потому что команда strcat
действительно выполняется перед вызовом mex
,
-
Это такое же поведение, как, например, с clear
, Как вы, возможно, знаете, следующие утверждения равны:
clear a b c
clear('a','b','c');
Хорошо, это можно сделать с помощью команды eval
file_name=(strcat(component_name,'_s_func','.c'));
eval(['mex -g ',file_name]);