|
Модераторы: Daevaorn |
|
smoke_man |
|
||||||||||||
Опытный Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 1 Всего: 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". Присоединённый файл ( Кол-во скачиваний: 76 ) Source.rar 869,86 Kb -------------------- 0x2b|~0x2b |
||||||||||||
|
|||||||||||||
kowara |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 17.6.2010 Репутация: нет Всего: нет |
Вроде делаю всё верно, а выходит ошибка !!! в dataplotlib.h:
fatal error C1083: Не удается открыть файл include: mclmcr.h: No such file or directory Кроме подключения файл dataplotlib.h в коде, надо ещё что-то где-то добавлять!!??? Очень прошу помощи... |
|||
|
||||
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |