Создайте 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.
Создайте единственную программу 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 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.
Скопируйте пример механизма 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 отображает опции для вашей версии и системы на основе списка Поддерживаемых и Совместимых Компиляторов.
filenames
— Одни или несколько имен файловОдни или несколько имен файлов, включая имя и расширение файла, заданное как строка или вектор символа. Если файл не находится в текущей папке, задайте полный путь к файлу.
Имена файлов могут быть любой комбинацией:
C, C++ или исходные файлы языка Фортрана
S-функциональные-файлы Simulink®
Объектные файлы
Статические файлы библиотеки. Для соединения динамических библиотек используйте опцию
.-llibname
Первый файл исходного кода, перечисленный в filenames
, является именем бинарного файла MEX. Чтобы заменить это соглашение о присвоении имен, используйте опцию '-output'
.
Типы данных: char
option1 ... optionN
— Одна или несколько опций сборкиОдна или несколько опций сборки, заданных как одно из этих значений. Опции могут появиться в любом порядке на любую платформу, кроме, где обозначено.
Опция | Описание |
---|---|
|
Файл Windows RSP использования. Файл RSP является текстовым файлом, содержащим параметры командной строки. Символы неASCII не поддержаны. |
|
Компилирует объектный файл только. Не создает бинарный файл MEX. |
|
Создавание приложения Engine. |
|
Опции
Опция Не добавляйте пробел между D или U и |
|
Чтобы создать приложения механизма, используйте опцию Задает название и местоположение конфигурационного файла |
|
Добавляет символьная информация и отключает созданный объектный код оптимизации. Используйте для отладки. Чтобы отладить с оптимизацией, добавьте опцию |
|
Отображения помогают для |
|
Добавляет Не добавляйте пробел между мной и |
|
Ссылки с библиотекой MATLAB расширяет
Если используется, опция Не добавляйте пробел между l и Задайте опцию Чтобы соединить статическую библиотеку, используйте
входной параметр |
|
Отображения, но не выполняется, команды, которые выполнил бы |
|
Оптимизирует объектный код. Используйте эту опцию, чтобы скомпилировать с оптимизацией. Оптимизация включена по умолчанию. Оптимизация отключена, когда опция Задайте эту опцию с прописной буквой O. |
|
Места все выходные файлы в папке |
|
Заменяет механизм именования файла MEX по умолчанию. Создает бинарный файл MEX под названием Пример: Объединение исходных файлов Используя подстановочный знак |
| Ссылки с заданной обработкой массива MATLAB C или Матричным API Фортрана. Не используйте эту опцию для файлов MEX или приложения механизма с помощью MATLAB Data API.
|
|
Измените компилятор по умолчанию, чтобы создать файлы MEX языка |
|
Подавляет информационные сообщения. Команда |
|
Удаляет любое первоначальное определение макроса препроцессора C Не добавляйте пробел между U и |
|
Сборки в многословном режиме. Значения отображений для внутренних переменных после всех параметров командной строки рассматриваются. Отображения каждая компиляция и ссылка продвигаются полностью оцененные. Используйте для поиска и устранения неисправностей проблем настройки компилятора. Пример: Отображение подробной сборки и информации о Поиске и устранении проблем |
|
Настройка по умолчанию переопределений для переменного Пример: Переопределение опции переключателя компилятора по умолчанию. |
ленг
Язык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 |
|
Apple (64-битный) Mac |
|
Windows (64-bit) |
|
Чтобы идентифицировать расширение файла MEX, используйте функцию mexext
.
Чтобы использовать mex
, чтобы создать исполняемые файлы для автономного движка MATLAB и приложений MAT-файла, используйте опцию -client engine
.
Команда mex
не поддерживает имена папок, содержащие двойную кавычку ("
) символы.
C матричный API | Матричный API Фортрана | MATLAB Data API | clear
| компьютер
| dbmex
| inmem
| loadlibrary
| mex.getCompilerConfigurations
| mexext
| псевдокод
| prefdir
| система
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.