MLX
Файл определенияИногда, содержимое файлов библиотеки превышает пределы, который вызывает MATLAB® создать только M
файл, но не MLX
файл. Ищите свою выходную папку файл определения формы define
и отредактируйте содержимое, когда вы делаете libName
MMLX
версия.
MLX
Файл определенияЕсли у вас есть проблемы эффективности, открывающие MLX
файл, затем можно использовать соответствующий define
файл вместо этого. Сначала удалите libName
MMLX
файл, и затем открывает .m
файл в редакторе MATLAB.
Когда вы используете аргумент, чтобы задать форму для другого аргумента, необходимо задать аргумент в подписи функции C++. В примере Сгенерированное Определение Библиотеки Файл MLX предположите, что вы задаете форму аргумента in
в качестве аргумента inb
:
defineArgument(taskDefinition, "in", "clib.array.libname.Int", "input", "inb");
Подпись C++ для функционального task
не имеет аргумента inb
.
void task(int* in, double* ind, int sz, char const* inc)
Для получения дополнительной информации о SHAPE
значения, смотрите, Задают Недостающий Параметр SHAPE.
Когда вы используете аргумент, чтобы задать форму для другого аргумента, необходимо рассмотреть типы для обоих аргументов. В примере Сгенерированное Определение Библиотеки Файл MLX предположите что вы аргумент define inc
как отключенная пустым указателем строка:
defineArgument(taskDefinition, "inc", "string", "input", "nullTerminated");
Если вы задаете форму аргумента ind
в качестве аргумента inc
, MATLAB отображает ошибку, потому что строка не может использоваться для числового типа.
defineArgument(taskDefinition, "ind", "clib.array.libname.Double", "input", "inc");
Для получения дополнительной информации о SHAPE
значения, смотрите, Задают Недостающий Параметр SHAPE.
Если библиотека содержит какие-либо неподдерживаемые функции языка или типы данных, то функциональность не включена в файл определения библиотеки.
Для получения информации о сообщениях об ошибке обратитесь к этому примеру. Подпись C++:
void task(int * in, double * ind, int sz, char const * inc)
%taskDefinition = addFunction(libDef, ... % "void task(int * in,double * ind,int sz,char const * inc)", ... % "MATLABName", "clib.libname.task", ... % "Description", "clib.libname.task Representation of C++ function task."); % Modify help description values as needed. %defineArgument(taskDefinition, "in", "clib.array.libname.Int", "input", <SHAPE>); % <MLTYPE> can be "clib.array.libname.Int",or "int32" %defineArgument(taskDefinition, "ind", "clib.array.libname.Double", "input", <SHAPE>); % <MLTYPE> can be "clib.array.libname.Double", or "double" %defineArgument(taskDefinition, "sz", "int32"); %defineArgument(taskDefinition, "inc", <MLTYPE>, "input", <SHAPE>); % <MLTYPE> can be "clib.array.libname.Char","int8","string", or "char" %validate(taskDefinition);
undefined reference
или unresolved external symbol
Когда вы создаете интерфейс при помощи clibgen.generateLibraryDefinition
или clibgen.buildInterface
функции, компилятор может отобразить сообщения об ошибке о undefined reference
или unresolved external symbol
. Эти ошибки часто происходят, когда вы забываете предоставлять информацию о совместно использованных файлах библиотеки. Чтобы включать совместно использованные файлы библиотеки, используйте 'Libraries'
аргумент значения имени.
Если вы уже вызвали clibgen.generateLibraryDefinition
функция, можно отредактировать файл определения библиотеки define
зафиксировать ошибку сборки. Ищите раздел OutputFolder and Libraries и заполните или измените libname
.mlxlibDef.Libraries
переменная. Обязательно задайте полный путь и имя библиотеки. Сохраните файл, затем повторно выполнитесь build
функция.