Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Использование MatLab в проектах на С/C++ |
Автор: smoke_man 6.9.2009, 20:17 | ||||||||||||
Создание функций MatLab в виде разделяемой библиотеки dll Для начала необходимо настроить компилятор среды Matlab. Это можно сделать либо из cmd, либо из самой среды командой mbuild –setup . При ее выполнении появится строка: Please choose your compiler for building standalone MATLAB applications: Would you like mbuild to locate installed compilers [y]/n? При подтверждении появится список установленных в системе компиляторов, поддерживаемых средой MatLab. Если выберете n , то появится список всех поддерживаемых компиляторов данной версии программы. Стоит отметить, что чем выше версия Matlab – тем больше поддерживаемых компиляторов. Select a compiler: [1] Borland C++Builder version 6.0 in C:\Program Files\Borland [2] Lcc C version 2.4 in C:\MATLAB6P5\sys\lcc [3] Microsoft Visual C/C++ version 6.0 in C:\Program Files\Microsoft Visual Studio [0] None Выбираем компилятор, который будет использоваться, и подтверждаем свой выбор. Я использую 3-ий. Следующий шаг написание m-файла. Пример 1 – Создание функции без параметров. Создадим m-функцию с названием dataplotdll .m , содержащей:
Данная функция выполняет чтение данных из текстового файла и выводит их в виде графика.В среде MatLab указываем директорию, содержащую данный файл. Для этого можно воспользоваться полем Current Directory. Далее компилируем m-функцию следующей командой: mcc -B sgl -t -W libhg:dataplotlib -T link:lib dataplotdll.m При компиляции использовались следующие опции компилятора:
Полное описание ключей компилятора Matlab можно получить командой mcc -? Создаем пустой консольный проект. Я использую для этого VS2008, в других студиях следующие действия делаются по аналогии. Стоит отметить, что при использовании Builder могут возникнуть проблемы с использованием заголовочных файлов MatLab , так как строки в этих файлов имеют большую длину. Чтобы исключить эту проблему, необходимо воспользоваться текстовым редактором, поддерживающим длинные строки, и разбить их для уменьшения длины. В папку с проектом консоли необходимо скопировать следующие файлы из директории MATLABверсия\extern\include\: libmatlb.h; libmatlbm.h; libsgl.h ; matrix.h; mex.h; mwutil.h; tmwtypes.h, а так же скопировать из папки с m-файлом: dataplotlib.dll; dataplotlib.lib; dataplotlib.h Все h-файлы необходимо подключить к проекту.Создаем main.cpp и подключаем к проекту. В main.cpp пишем текст программы:
После компиляции проекта скопируйте dataplotlib.dll, а так же файлы FigureMenuBar.fig и FigureToolBar.fig(необходимы для отображения меню и интструментов работы с графиком) в директорию с получившимся exe-файлом. Пример 2. Создание функции с параметрами. Изменим предыдущий пример следующим образом:
То есть в функцию передаем координаты точек и название графика. Компилируем m-файл как в примере 1: mcc -B sgl -t -W libhg:dataplotlib -T link:lib dataplotdll.m Создаем новый пустой консольный проект. Копируем в директорию с проектом консоли файлы из MATLABверсия\extern\include\: libmatlb.h; libmatlbm.h; libsgl.h ; matrix.h ; mex.h; mwutil.h; tmwtypes.h, библиотеки libmatlb.lib и libmx.lib из \MATLABверсия\extern\lib\win32\ваш компилятор\, а так же из папки с m-файлом: dataplotlib.dll ; dataplotlib.lib; dataplotlib.h Все h-файлы подключаем к проекту. Создаем main.cpp следующего содержания:
После компиляции проекта скопируйте dataplotlib.dll, а так же файлы FigureMenuBar.fig и FigureToolBar.fig в директорию с получившимся exe-файлом. Пример 3 Создание функции возвращающей значение Изменим предыдущий пример следующим образом:
Компилируем m-файл как в примере 2, но без ключа -B, так как графика здесь не нужна: mcc -t -W libhg:dataplotlib -T link:lib dataplotdll.m Создаем новый пустой консольный проект. Копируем в директорию с проектом консоли файлы из MATLABверсия\extern\include\: libmatlb.h; libmatlbm.h; libsgl.h ; matrix.h ; mex.h; mwutil.h; tmwtypes.h, библиотеки libmatlb.lib и libmx.lib из \MATLABверсия\extern\lib\win32\ваш компилятор\, а так же из папки с m-файлом: dataplotlib.dll ; dataplotlib.lib; dataplotlib.h Все h-файлы подключаем к проекту. Создаем main.cpp следующего содержания:
Надеюсь данные примеры помогут в освоении использования Matlab в своих проектах. Статья написана с использованием материалов книги Джифенга Ксу "Взаимодействие Matlab с ANSI C, Visual C++, Visual BASIC и Java". |
Автор: kowara 17.6.2010, 01:11 |
Вроде делаю всё верно, а выходит ошибка !!! в dataplotlib.h: fatal error C1083: Не удается открыть файл include: mclmcr.h: No such file or directory Кроме подключения файл dataplotlib.h в коде, надо ещё что-то где-то добавлять!!??? Очень прошу помощи... ![]() |