mEX

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

Синтаксис

mex filenames
mex filenames api option1 ... optionN
mex -client engine filenames
mex -client engine filenames api option1 ... optionN
mex -setup [lang]
mex -setup -client engine [lang]

Описание

пример

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

При записи файлов MEX на основе Вызова MATLAB от C или Вызова MATLAB с Фортрана, затем mex filenames создает один или несколько C, C++ или исходные файлы Фортрана с api -R2017b. В будущей версии 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 -client engine filenames создает автономное приложение с api -R2017b. В будущей версии 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

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

Создайте файл MEX yprime.c путем добавления значения -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')

Создайте файл MEX fulltosparse. Именем файла 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®

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

  • Статические файлы библиотеки. Для соединения динамических библиотек используйте опцию -llibname.

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

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

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

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

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

Не используйте эту опцию для файлов 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 при вызове функций BLAS или LAPACK.

Опция по умолчанию для 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 или lib libname .lib — Windows Systems

  • lib libname .dylib — системы macOS

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

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

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

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

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

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

-n

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

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

-O

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

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

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

-outdir dirname

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

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

-output mexname

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

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

-setup lang

Измените компилятор по умолчанию, чтобы создать файлы MEX языка lang или приложения механизма. Когда вы используете эту опцию, 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 не поддерживает имена папок, содержащие двойную кавычку (") символы.

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