Создайте MEX-функцию из исходного кода C/C++ или Фортрана
mex filenames
mex option1 ... optionN filenames
mex -setup lang
mex -setup -client engine [lang]
Команда mex
создает MEX-функции и приложения механизма, записанные с MATLAB Data API, Матричным API C и Матричным API Фортрана.
Компиляции
и ссылки один или несколько C, C++ или исходные файлы Фортрана в бинарный файл MEX, вызываемый от MATLAB®. mex filenames
filenames
задает исходные файлы. Также исполняемые файлы сборок для автономного движка MATLAB и приложений MAT-файла.
MATLAB автоматически выбирает компилятор, если установлено, на основе языка аргументов
filenames
.
option1 ... optionN
filenames
mex
создает с заданными опциями сборки. Аргументы option1 ... optionN
добавляют или заменяют конфигурацию сборки mex
по умолчанию.
mex -setup lang
выбирает компилятор для данного lang
. Используйте эту опцию, чтобы изменить компилятор по умолчанию для данного языка.
mex -setup -client engine [lang]
выбирает компилятор для того, чтобы создать приложения механизма. Используйте эту опцию когда это необходимо, чтобы изменить компилятор по умолчанию. Используйте аргумент lang
для выбора компиляторы C ++ или Fortran.
Примеры
Создание Файла MEX на C
Создайте единственную программу 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® Command Prompt используйте двойные кавычки ("
).
mex -v COMPFLAGS="$COMPFLAGS -Wall" yprime.c
В командной строке интерпретатора на Mac и Linux, используйте одинарные кавычки ('
).
mex -v CFLAGS='$CFLAGS -Wall' yprime.c
Создание файла MEX из нескольких исходных файлов
Пример файла MEX fulltosparse
состоит из двух исходных файлов Фортрана, loadsparse.F
и fulltosparse.F
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
h.
Скопируйте пример matrixDivideComplex.c
в текущую папку.
copyfile(fullfile(matlabroot,'extern','examples','refbook','matrixDivideComplex.c'),'.','f')
Создайте аргумент -I
путем конкатенации '-I'
с путем к fort.h
hfile .
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.
Создавание приложения Engine
Скопируйте пример механизма
engwindemo.c
в текущую папку.
copyfile(fullfile(matlabroot,'extern','examples','eng_mat','engwindemo.c'),'.','f')
mex -client engine engwindemo.c
Если вы работаете на платформе Windows, необходимо сначала указать MATLAB как сервер COM. Для получения дополнительной информации смотрите Регистр MATLAB как Сервер COM.
Запустите пример.
!engwindemo
Выбор C Compiler
mex -setup
MATLAB отображает опции для вашей версии и системы на основе списка Поддерживаемых и Совместимых Компиляторов.
Входные параметры
filenames
— Одни или несколько имен файлов
представьте в виде строки | вектор символа
Одни или несколько имен файлов, включая имя и расширение файла, заданное как строка или вектор символа. Если файл не находится в текущей папке, задайте полный путь к файлу.
Имена файлов могут быть любой комбинацией:
C, C++ или исходные файлы языка Фортрана
S-функциональные-файлы Simulink®
Объектные файлы
Статические файлы библиотеки. Для соединения динамических библиотек используйте опцию -llibname
.
Первый файл исходного кода, перечисленный в filenames
, является именем бинарного файла MEX. Чтобы заменить это соглашение о присвоении имен, используйте опцию '-output'
.
Типы данных: char
option1 ... optionN
— Одна или несколько опций сборки
строки или векторы символов, соответствующие допустимым флагам опции
Одна или несколько опций сборки, заданных как одно из этих значений. Опции могут появиться в любом порядке на любую платформу, кроме, где обозначено.
Опция Описание
@rspfile
Файл Windows RSP использования. Файл RSP является текстовым файлом, содержащим параметры командной строки. Символы не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
Чтобы создать приложения механизма, используйте опцию -client engine
.
Задает название и местоположение конфигурационного файла mex
. Заменяет выбор компилятора по умолчанию. Для получения информации об использовании компилятора не по умолчанию см. Компилятор Значения по умолчанию Изменения. filepath
является именем и полным путем конфигурационного файла, заданного как строка или вектор символа.
G
Добавляет символьная информация и отключает созданный объектный код оптимизации. Используйте для отладки. Чтобы отладить с оптимизацией, добавьте опцию -O
.
Справка
Отображения помогают для mex
. Используйте от подсказки операционной системы.
-Ipathname
Добавляет pathname
к списку папок, чтобы искать файлы #include
.
Не добавляйте пробел между мной и pathname
.
-llibname
-Llibfolder -llibname
Ссылки с библиотекой libname
динамического объекта в (дополнительном) libfolder
.
MATLAB расширяет libname
до:
libname .
lib
или liblibname.lib
— системы Windows
lib
libname
.dylib
— Системы Mac
lib
libname
.so
— Системы Linux
Если используется, опция -L
должна предшествовать опции -l
. При использовании опции -L
в системах Linux или Mac также необходимо установить путь к библиотеке времени выполнения, как объяснено в Установленном Пути Библиотеки времени выполнения.
Не добавляйте пробел между l и libname
или между L и libfolder
.
Задайте опцию -l
со строчной буквой L.
Чтобы соединить статическую библиотеку, используйте
входной параметр filenames
.
N
Отображения, но не выполняется, команды, которые выполнил бы mex
.
O
Оптимизирует объектный код. Используйте эту опцию, чтобы скомпилировать с оптимизацией.
Оптимизация включена по умолчанию. Оптимизация отключена, когда опция -g
появляется без опции -O
.
Задайте эту опцию с прописной буквой O.
-outdir dirname
Места все выходные файлы в папке dirname
.
-output mexname
Заменяет механизм именования файла MEX по умолчанию. Создает бинарный файл MEX под названием mexname
с соответствующим расширением файла MEX.
Пример: Объединение исходных файлов Используя подстановочный знак
-R2017b
(значение по умолчанию)
-R2018a
-largeArrayDims
-compatibleArrayDims
Ссылки с заданной обработкой массива MATLAB C или Матричным API Фортрана. Не используйте эту опцию для файлов MEX или приложения механизма с помощью MATLAB Data API.
R2017b
'DefaultOption' . -R2017b
использует опцию -largeArrayDims
и обрабатывает указатель на графический объект как object
, не double
.
-R2018a
— Использует чередованный комплексный API, который включает введенные функции доступа к данным.
Запускать файл MEX Фортрана создало с чередованным комплексным API в MATLAB R2018a, необходимо использовать Обновление MATLAB R2018a 3.
-largeArrayDims
— Использует API обработки большого массива MATLAB. Этот API обрабатывает массивы больше чем с 231-1 элементом. Должен использовать эту опцию при вызове функций BLAS или LAPACK.
-compatibleArrayDims
— Использует API обработки массива MATLAB Version 7.2, который ограничивает массивы 231-1 элементом. Опция по умолчанию для S-функций MEX C только.
-setup lang
Измените компилятор по умолчанию, чтобы создать файлы MEX языка lang
. Когда вы используете эту опцию, mex
игнорирует все другие параметры командной строки.
-silent
Подавляет информационные сообщения. Команда mex
все еще сообщает об ошибках и предупреждениях, даже когда вы задаете -silent
.
-Usymbolname
Удаляет любое первоначальное определение макроса препроцессора C symbolname
. (Инверсия опции -D
.)
Не добавляйте пробел между U и symbolname
.
V
Сборки в многословном режиме. Значения отображений для внутренних переменных после всех параметров командной строки рассматриваются. Отображения каждая компиляция и ссылка продвигаются полностью оцененные. Используйте для поиска и устранения неисправностей проблем настройки компилятора.
Пример: Отображение подробной сборки и информации о Поиске и устранении проблем
varname=varvalue
Настройка по умолчанию переопределений для переменного varname
. Эта опция обрабатывается после того, как все параметры командной строки рассматриваются.
Пример: Переопределение опции переключателя компилятора по умолчанию.
ленг
Язык
C
(значение по умолчанию) | C++
| CPP
| Fortran
Язык, заданный как одно из этих значений.
C
Компиляторы C, включая C++.
C++
или CPP
Компиляторы C++.
Fortran
Компиляторы Фортрана.
Советы
Можно запустить
mex
от:
Окно Команды MATLAB
Системное приглашение Windows
Терминал Mac
Интерпретатор Linux
Для использования командной строки за пределами MATLAB программа
mex
расположена в папке, заданной [matlabroot '/bin']
.
Файл MEX имеет зависимое платформой расширение. Можно поместить бинарные файлы MEX для других платформ в той же папке.
Расширение зависимого платформы файла MEX
Платформа Бинарное расширение файла MEX (64-битный) Linux
mexa64
Apple (64-битный) Mac
mexmaci64
Windows (64-bit)
mexw64
Чтобы идентифицировать расширение файла MEX, используйте функцию mexext
.
Чтобы использовать
mex
, чтобы создать исполняемые файлы для автономного движка MATLAB и приложений MAT-файла, используйте опцию -client engine
.
Команда
mex
не поддерживает имена папок, содержащие двойную кавычку ("
) символы.
Смотрите также
C матричный API | Матричный API Фортрана | MATLAB Data API |
clear
| компьютер
| dbmex
| inmem
| loadlibrary
| mex.getCompilerConfigurations
| mexext
| псевдокод
| prefdir
| система
Темы
Внешние веб-сайты
Представлено до R2006a
Была ли эта тема полезной?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
Памятка переводчика
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.