Использование компилятора Matlab C ++ для преобразования кода C ++ в Matlab - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь использовать компилятор MinGW-w64 в Matlab.Я установил его, и Matlab распознает компилятор.У меня вопрос в два раза:

1) Я не могу заставить его скомпилировать весь код .c в заголовок.Я набрал

 mex -output HTKToolsFolder *.c
 Building with 'MinGW64 Compiler (C)'.

и получил

Error using mex
C:\Users\username\Documents\MATLAB\MatlabHTK\htk\HTKTools\HBuild.c:39:46:    fatal error: HShell.h: No such
file or directory
 #include "HShell.h" /* HMM ToolKit Modules */
                                          ^
compilation terminated.

Я не уверен, что такое расширение .h.Этот файл находится в другой папке, но если я скажу Matlab скомпилировать файлы .h, он не распознает расширение файла

mex -output hfilescompiled *.h
Error using mex
Unknown file extension '.h'.

Если это поможет, HShell.h вызывается некоторыми из файлов .c

Второй вопрос: после ответа на вопрос № 1 можно ли применить его к каталогу со многими папками кода C ++?Или мне нужно использовать команду mex для каждой отдельной папки?

Я смотрел учебное пособие по Matlab: https://www.mathworks.com/solutions/matlab-and-c.html, а также прочитал файлы справки Matlab для mex и loadlibrary.

Любой совет очень ценится, так как я впервые смешал C ++ и Matlab.Заранее спасибо!

1 Ответ

0 голосов
/ 09 ноября 2018

Вы хотите сделать это:

mex HBuild.c -IC:\Path\To\H\Files

где C:\Path\To\H\Files - это каталог, который содержит HShell.h.

Это создаст MEX-файл с именем HBuild (при условии, что HBuild.c содержит функцию mexFunction и других зависимостей не существует).

Если вы сделаете mex *.c, то все исходные файлы C в этом каталоге будут объединены в один MEX-файл. Я сомневаюсь, что это то, что вы хотите. Вам нужно вызвать mex для каждого из MEX-файлов, которые вы хотите собрать. Каждый MEX-файл станет функцией, доступной в MATLAB.

...