mex

Создайте приложение механизма или MEX-функция

Описание

пример

mex filenames компиляции и ссылки один или несколько исходных файлов C++, записанных с MATLAB Data API в бинарный файл MEX в текущей папке. Для получения информации о записи этих приложений см. Приложения C++ MEX.

При записи файлов MEX на основе Матричного API C или Матричного API Фортрана, затем mex filenames сборки один или несколько C, C++ или исходные файлы Фортрана с -R2017b api. В будущей версии MATLAB®, api по умолчанию опция изменится, чтобы использовать чередованный комплексный API (-R2018a). MathWorks рекомендует, чтобы вы создали файлы MEX и обновили существующие файлы MEX, чтобы использовать чередованный комплексный API. В качестве альтернативы используйте MX_HAS_INTERLEAVED_COMPLEX макрос, чтобы гарантировать желаемое поведение через версии MATLAB. Для получения дополнительной информации смотрите Поддержку MATLAB Чередованного Комплексного API в MEX-функциях.

Для получения информации о работе с C видят C++ и приложения Фортрана, Интегрируют MATLAB со Сторонними языками программирования и Системами.

пример

mex filenames api option1 ... optionN сборки с заданным api и дополнительный option1 ... optionN аргументы. option1 ... optionN аргументы добавляют или заменяют mex по умолчанию конфигурация сборки.

mex -client engine filenames сборки исходные файлы C++, записанные с MATLAB Data API в автономные способы применения Engine MATLAB. Для получения дополнительной информации смотрите Введение в Engine API для C++

При записи приложений на основе API MATLAB Engine для C, API MATLAB C, чтобы Считать Данные о MAT-файле, API MATLAB Engine для Фортрана или API Фортрана MATLAB, чтобы Считать Данные о MAT-файле, затем mex - клиентский механизм filenames создает автономное приложение с -R2017b api. В будущей версии MATLAB, api по умолчанию опция изменится, чтобы использовать чередованный комплексный API (-R2018a). MathWorks рекомендует, чтобы вы создали приложения механизма и обновили существующие приложения, чтобы использовать чередованный комплексный API.

mex -client engine filenames api option1 ... optionN создает приложения механизма с заданным api и дополнительный option1 ... optionN аргументы.

mex -setup [lang] выбирает компилятор для данного lang для создания файлов MEX. MATLAB задает компилятор по умолчанию для каждого поддерживаемого языка. Если у вас есть несколько компиляторов для данного языка, используйте lang опция, чтобы изменить компилятор по умолчанию для того языка. Для получения дополнительной информации см. Компилятор Значения по умолчанию Изменения и Выберите C ++ Compiler.

mex -setup -client engine [lang] выбирает компилятор для того, чтобы создать приложения механизма.

Примеры

свернуть все

Скопируйте пример исходного кода с matlabroot/extern/examples папка.

copyfile(fullfile(matlabroot,'extern','examples','mex','explore.c'),'.','f')

Создайте файл MEX. Выход отображает информацию, характерную для вашего компилятора.

mex -R2018a explore.c

Тест.

a = [1 3 5];
b = [5 3 1];
A = complex(a,b);
explore(A)
------------------------------------------------
Name: prhs[0]
Dimensions: 1x3
Class Name: double
------------------------------------------------
	(1,1) = 1 + 5i
	(1,2) = 3 + 3i
	(1,3) = 5 + 1i

Создайте одну программу C yprime.c в файл MEX.

Создайте перезаписываемую папку на своем пути c:\work и набор это как текущая папка.

[s,msg,msgid] = mkdir('c:\work');
if (isempty(msgid))
    mkdir('c:\work')
end
cd c:\work

Скопируйте пример исходного кода с matlabroot/extern/examples папка.

copyfile(fullfile(matlabroot,'extern','examples','mex','yprime.c'),'.','f')

Создайте файл MEX. Выход отображает информацию, характерную для вашего компилятора.

mex yprime.c
Building with 'MinGW64 Compiler  C '.
MEX completed successfully.

Тест.

T=1;
Y=1:4;
yprime(T,Y)
ans =

    2.0000    8.9685    4.0000   -1.0947

Чтобы отобразить компиляцию и команды ссылки и другую информацию, полезную для поиска и устранения неисправностей, используйте многословный режим.

mex -v -compatibleArrayDims yprime.c

Выход отображает информацию, характерную для вашей платформы и компилятора.

Создайте yprime.c Файл MEX путем добавления значения -Wall к существующему флагу компилятора. Поскольку значение включает пробел, необходимо формировать рисунок строки; символ, который вы используете, зависит от платформы.

В посдказке MATLAB используйте одинарные кавычки MATLAB (').

mex -v COMPFLAGS='$COMPFLAGS -Wall' yprime.c

Для компилятора MinGW-w64, который основан на gcc/g ++, используют флаги компилятора Linux®.

mex -v CXXFLAGS='$CXXFLAGS -Wall' yprime.c

В командной строке Windows® используйте двойные кавычки (").

mex -v COMPFLAGS="$COMPFLAGS -Wall" yprime.c

В командной строке интерпретатора на macOS и Linux, используйте одинарные кавычки (').

mex -v CFLAGS='$CFLAGS -Wall' yprime.c

Пример файла MEX fulltosparse состоит из двух исходных файлов Фортрана, loadsparse.F и fulltosparse.F. Чтобы запустить этот пример, вам нужен поддерживаемый компилятор Фортрана, установленный в вашей системе.

Скопируйте исходные файлы в текущую папку.

copyfile(fullfile(matlabroot,'extern','examples','refbook','loadsparse.F'),'.','f')
copyfile(fullfile(matlabroot,'extern','examples','refbook','fulltosparse.F'),'.','f')

Создайте fulltosparse Файл MEX. Именем файла MEX является fulltosparse потому что fulltosparse.F первый файл на командной строке. Выход содержит информацию, характерную для вашего компилятора.

mex -largeArrayDims fulltosparse.F loadsparse.F
Building with 'Intel Visual Fortran Composer XE 2013 with Microsoft Visual Studio 2012'.
MEX completed successfully.

Тест.

full = eye(5);
spar = fulltosparse(full)
spar =

    1,1         1
    2,2         1
    3,3         1
    4,4         1
    5,5         1

Объедините все исходные файлы C в текущей папке в файл MEX mymex. Используйте -output опция, чтобы управлять именем файла MEX.

mex -output mymex *.c

Чтобы предварительно просмотреть детали команды сборки, не выполняя команды, используйте -n опция. Выход содержит информацию, характерную для вашей платформы и компилятора.

mex -n yprime.c

Можно соединиться с объектными файлами, которые вы компилируете отдельно от ваших исходных файлов MEX.

Пример файла MEX fulltosparse состоит из двух исходных файлов Фортрана. fulltosparse файл является стандартной программой шлюза (содержит mexFunction стандартная подпрограмма) и loadsparse содержит вычислительную процедуру.

Чтобы запустить этот пример, вам нужен поддерживаемый компилятор Фортрана, установленный в вашей системе. Скопируйте вычислительную стандартную подпрограмму в свою текущую папку.

copyfile(fullfile(matlabroot,'extern','examples','refbook','loadsparse.F'),'.','f')

Скомпилируйте стандартную подпрограмму и поместите объектный файл в отдельную папку, c:\objfiles.

mkdir c:\objfiles
mex -largeArrayDims -c -outdir c:\objfiles loadsparse.F
Building with 'Intel Visual Fortran Composer XE 2013 with Microsoft Visual Studio 2012'.
MEX completed successfully.

Скопируйте стандартную подпрограмму шлюза в свою текущую папку. Скомпилируйте и соединитесь с loadsparse объектный файл.

copyfile(fullfile(matlabroot,'extern','examples','refbook','fulltosparse.F'),'.','f')
mex -largeArrayDims fulltosparse.F c:\objfiles\loadsparse.obj
Building with 'Intel Visual Fortran Composer XE 2013 with Microsoft Visual Studio 2012'.
MEX completed successfully.

Чтобы задать путь, чтобы включать библиотечные подпрограммы LAPACK MATLAB для обработки стандартных программ комплексного числа, используйте -I опция. Чтобы использовать эти стандартные подпрограммы, ваш файл MEX должен получить доступ к заголовочному файлу fort.h.

Скопируйте matrixDivideComplex.c пример к текущей папке.

copyfile(fullfile(matlabroot,'extern','examples','refbook','matrixDivideComplex.c'),'.','f')

Создайте -I аргумент путем конкатенации '-I' с путем к fort.h файл.

ipath = ['-I' fullfile(matlabroot,'extern','examples','refbook')];

Создайте переменные для имен и путей к файлу библиотеки LAPACK и файлу, fort.c, содержа стандартные программы обработки комплексного числа.

lapacklib = fullfile(matlabroot,'extern','lib',computer('arch'),'microsoft','libmwlapack.lib');
fortfile = fullfile(matlabroot,'extern','examples','refbook','fort.c');

Создайте файл MEX.

mex('-v','-R2017b',ipath,'matrixDivideComplex.c',fortfile,lapacklib)

Создайте matrixDivide.c пример на платформе Windows с помощью -L и -l опции, чтобы задать libmwlapack.lib библиотека. Файл библиотеки расположен в папке, matlabroot\extern\lib\arch\microsoft.

Скопируйте matrixDivide.c пример к текущей папке.

copyfile(fullfile(matlabroot,'extern','examples','refbook','matrixDivide.c'),'.','f')

Получите значение matlabroot.

matlabroot
ans =

C:\Program Files\MATLAB\R2014a

Получите значение arch.

computer('arch')
ans =

win64

Чтобы создать файл MEX, скопируйте значения matlabroot и arch в mex команда, как показано в следующем операторе.

mex '-LC:\Program Files\MATLAB\R2014a\extern\lib\win64\microsoft'...
   -llibmwlapack matrixDivide.c

Необходимо использовать ' символы, потому что \Program Files в пути включает пробел.

mxcreatecharmatrixfromstr.c пример использует #define символ SPACE_PADDING определить что символ использовать между векторами символов в матрице. Чтобы установить значение, создайте файл MEX с -D опция.

Скопируйте пример в текущую папку.

copyfile(fullfile(matlabroot,'extern','examples','mx','mxcreatecharmatrixfromstr.c'),'.','f')

Установите SPACE_PADDING директива, чтобы добавить пробел между значениями.

mex mxcreatecharmatrixfromstr.c -DSPACE_PADDING
Building with 'MinGW64 Compiler  C '.
MEX completed successfully.

Скопируйте engwindemo.c пример механизма к текущей папке.

copyfile(fullfile(matlabroot,'extern','examples','eng_mat','engwindemo.c'),'.','f')
mex -client engine engwindemo.c

Если вы работаете на платформе Windows, необходимо сначала указать MATLAB как сервер COM. Для получения дополнительной информации смотрите Регистр MATLAB как Сервер COM.

Запустите пример.

!engwindemo
mex -setup

MATLAB отображает опции для вашей версии и системы на основе списка Поддерживаемых и Совместимых Компиляторов.

Входные параметры

свернуть все

Одни или несколько имен файлов, включая имя и расширение файла, заданное как строка или вектор символов. Если файл не находится в текущей папке, задайте полный путь к файлу.

Имена файлов могут быть любой комбинацией:

  • C, C++ или исходные файлы языка Фортрана

  • S-файлы-функции Simulink®

  • Объектные файлы

  • Статические файлы библиотеки. filenames должен включать полностью определенный путь к файлу библиотеки. Чтобы соединить динамические библиотеки, используйте-llibname опция.

Первый файл исходного кода перечислен в filenames имя бинарного файла MEX или приложения механизма. Чтобы заменить это соглашение о присвоении имен, используйте '-output' опция.

Используйте редактор MATLAB, чтобы записать ваш исходный код. Если вы используете интегрированную среду разработки (IDE), такую как Microsoft® Visual Studio® или XCode, то можно использовать mex команда или следует инструкциям в Сделанном на заказ с Опциями Скрипта MEX.

MATLAB автоматически выбирает компилятор, если установлено, на основе языка filenames аргументы.

Типы данных: char

Ссылки со специфичным для релиза Матричным API C или Матричным API Фортрана, заданным как одно из этих значений. Не комбинируйте эти опции.

Не используйте эту опцию в файлах MEX или приложения механизма с помощью MATLAB Data API.

APIОписание

-R2017b (значение по умолчанию)

Сборки с:

  • Отдельный комплексный API, который содержит Матричную функциональность API C и Фортрана в MATLAB R2017b и ранее.

  • Обрабатывающий большой массив API, который обрабатывает массивы больше чем с 231-1 элементом.

  • Обрабатывает указатель на графический объект как object, не double.

В будущей версии MATLAB, api по умолчанию опция изменится, чтобы использовать чередованный комплексный API (-R2018a). MathWorks рекомендует, чтобы вы создали приложения и обновили существующие приложения, чтобы использовать чередованный комплексный API. В качестве альтернативы используйте MX_HAS_INTERLEAVED_COMPLEX макрос, чтобы гарантировать желаемое поведение через версии MATLAB. Для получения дополнительной информации смотрите Поддержку MATLAB Чередованного Комплексного API в MEX-функциях.

-R2018a

Сборки с:

Запускать файл MEX Фортрана создало с чередованным комплексным API в MATLAB R2018a, необходимо использовать Обновление MATLAB R2018a 3.

-largeArrayDims

Сборки с:

  • Отдельный комплексный API

  • Обрабатывающий большой массив API

  • Обрабатывает указатель на графический объект как object, не double. Обрабатывать указатель как double, объедините эту опцию с -DMEX_DOUBLE_HANDLE.

-compatibleArrayDims

Сборки с:

  • Отдельный комплексный API

  • API обработки массива версии 7.2, который ограничивает массивы 231-1 элементом

  • Обрабатывает указатель на графический объект как object, не double. Обрабатывать указатель как double, объедините эту опцию с -DMEX_DOUBLE_HANDLE.

Не используйте -compatibleArrayDims опция при вызове LAPACK или функций BLAS.

Опция по умолчанию для S-функций MEX C только.

Пример: mex -R2018a explore.c

Дополнительные опции сборки, заданные как одно из этих значений. Опции могут появиться в любом порядке на любую платформу, кроме, где обозначено.

ОпцияОписание

@rspfile

Файл Windows RSP использования. Файл RSP является текстовым файлом, содержащим параметры командной строки. Символы Non-ASCII не поддержаны.

-c

Компилирует объектный файл только. Не создает бинарный файл MEX.

-client engine

Создавание приложения Engine.

- Dsymbolname
- Dsymbolname=symbolvalue
- Usymbolname

-D опции задают макросы препроцессора C. Эквивалентный следующему в исходном файле:

  • #define symbolname

  • #define symbolname symbolvalue

-U опция удаляет любое первоначальное определение макроса препроцессора C, symbolname. Инверсия -D опция.

Не добавляйте пробел между D или U и symbolname. Не добавляйте пробелы вокруг знака =.

Пример: Определение директивы компилятора

- f filepath

Заменяет выбор компилятора по умолчанию. filepath имя и полный путь конфигурационного файла, заданного как строка или вектор символов. Для получения информации об использовании компилятора не по умолчанию см. Компилятор Значения по умолчанию Изменения.

Не используйте -f опция, чтобы создать приложения механизма. Используйте -client engine опция вместо этого.

-g

Добавляет символьная информация и отключает созданный объектный код оптимизации. Используйте в отладке. Чтобы отладить с оптимизацией, добавьте -O опция.

-h[elp]

Отображения помогают для mex. Используйте от подсказки операционной системы.

- Ipathname

Добавляет pathname к списку папок, чтобы искать #include файлы.

Не добавляйте пробел между I и pathname.

Пример: Определение пути, чтобы включать файл

- llibname
- Llibfolder - llibname

Ссылки с библиотекой libname динамического объекта в (дополнительном) libfolder.

MATLAB расширяет libname к:

  • libname.lib или liblibname.lib Windows Systems

  • liblibname.dylib — системы macOS

  • liblibname.so — Системы Linux

Если используется, -L опция должна предшествовать -l опция. При использовании -L опция на Linux или macOS системах, также необходимо установить путь к библиотеке времени выполнения, как объяснено в Установленном Пути Библиотеки времени выполнения.

Не добавляйте пробел между l и libname или между L и libfolder.

Задайте -l опция со строчной буквой L.

Чтобы соединить статическую библиотеку, используйте filenames входной параметр.

Пример: Определение пути к файлу библиотеки

-n

Отображения, но не выполняется, команды что mex выполнился бы.

Пример: Команды сборки предварительного просмотра

-O

Оптимизирует объектный код. Используйте эту опцию, чтобы скомпилировать с оптимизацией.

Оптимизация включена по умолчанию. Оптимизация отключена когда -g опция появляется без -O опция.

Задайте эту опцию с прописной буквой O.

- outdir dirname

Места все выходные файлы в папке dirname.

Пример: Создание и соединение с файлами отдельного объекта

- выход mexname

Заменяет механизм именования файла MEX по умолчанию. Создает бинарный файл MEX под названием mexname с соответствующим расширением файла MEX.

Пример: Объединение исходных файлов Используя подстановочный знак

- установите lang

Измените компилятор по умолчанию, чтобы создать lang файлы MEX языка или приложения механизма. Когда вы используете эту опцию, mex игнорирует все другие параметры командной строки.

-silent

Подавляет информационные сообщения. mex команда все еще сообщает об ошибках и предупреждениях, даже когда вы задаете -silent.

- Usymbolname

Удаляет любое первоначальное определение макроса препроцессора C symbolname. (Инверсия -D опция.)

Не добавляйте пробел между U и symbolname.

-v

Сборки в многословном режиме. Значения отображений для внутренних переменных после всех параметров командной строки рассматриваются. Отображения каждая компиляция и ссылка продвигаются полностью оцененные. Используйте в поиске и устранении неисправностей проблем настройки компилятора.

Пример: Отображение подробной сборки и информации о Поиске и устранении проблем

varname=varvalue

Настройка по умолчанию переопределений для переменной varname. Эта опция обрабатывается после того, как все параметры командной строки рассматриваются.

Пример: Переопределение опции переключателя компилятора по умолчанию.

Язык, заданный как одно из этих значений.

C

Компиляторы C, включая C++

C++ или CPP

Компиляторы C++

Fortran

Компиляторы Фортрана

Советы

  • Можно запустить mex от:

    • Окно Команды MATLAB

    • Системное приглашение Windows

    • Терминал macOS

    • Интерпретатор Linux

    Для использования командной строки за пределами MATLAB, mex программа расположена в папке, заданной [matlabroot '/bin'] на UNIX и [matlabroot '\bin\win64'] на Windows.

  • Файл MEX имеет зависимое платформой расширение. Можно поместить бинарные файлы MEX для других платформ в той же папке. Чтобы идентифицировать расширение файла MEX, используйте mexext функция.

    Расширение зависимого платформы файла MEX

    ПлатформаБинарное расширение файла MEX

    (64-битный) Linux

    mexa64

    Apple (64-битный) Mac

    mexmaci64

    Windows (64-bit)

    mexw64

  • Использовать mex чтобы создать исполняемые файлы для автономных способов применения Engine MATLAB, используйте -client engine опция.

  • mex команда не поддерживает имена папок, содержащие двойную кавычку ("'characters'.

Представлено до R2006a