Вернуться на главную страницу

Создание Visual C 6.0 проекта, использующего C++ библиотеку матлаба.

Предполагаем, что матлаб установлен в директории e:\work\matlabr12 .

  1. Делаем новый проект TestMlabCpp. Это у нас консольное приложение, простой вариант.
  2. В TestMlabCpp.cpp записываем следующий текст: (Взято с http://www.codeproject.com/samples/matlab_cpp.asp)

    #include "stdafx.h"
    
    #pragma comment(lib, "libmx.lib")
    #pragma comment(lib, "libmatlb.lib")
    #pragma comment(lib, "libmat.lib")
    #pragma comment(lib, "libmmfile.lib")
    #pragma comment(lib, "libmatpm.lib")
    
    int main(int argc, char* argv[])
    {
    	mwArray A, B, C;
    
    	A=magic(mwArray(5));
    	B=transpose(A);	//B=A'
    
    	C = plus(A,B);		//C = A + B;
    	C = minus(A,B);		//C = A - B;
    	C = mtimes(A,B);	//C = A * B;
    
    	double arr1[]={3.0, 2.0, 5.0, -1.0};
    	double arr2[]={8.0, 1.0, 3.0, -2.0};
    
    	mwArray D(1, 4, arr1);
    	mwArray E(4, 1, arr2);
    
    	C = D * E;		//4*4 matrix
    
    	mwArray F(0.0, 0.1, 5.0);	//create double ramp
    	F = F * transpose(F);
    
    	A.Print("A");	//Magic Matrix, Order=5
    	C.Print("C");
    	D.Print("D");
    
    	return 0;
    }
    
  3. Пробуем собрать. Не собирается. Говорит, что не знает ключевых слов. Учим ключевым словам. Для этого в stdafx.h пишем #include <matlab.hpp> А в настройках проекта (Alt+F7) в закладке C/C++->Preprocessor В поле "Additional include directories" пишем e:\work\matlabr12\extern\include;e:\work\matlabr12\extern\include\cpp .
  4. Пробуем собрать, не собирается. Говорит, что не может найти файл strsteram.h. Лечим так: Идём в Alt+F7 Project->Settings->C/C++->Preprocessor definitions, там вписываем: MSVC; MSWIND; IBMPC; D__STDC_;
  5. Теперь компиляция проходит успешно. Не линкуется. Лечим прописыванием путей: Alt+F7 Link->Additional link path E:\work\matlabr12\extern\lib\win32\microsoft\msvc60; E:\work\matlabr12\extern\lib\win32
  6. Продвижения несомненны. Теперь ошибки линковки. Решаем так: Alt+F7->C/C++->Use Run-Time library = Multithreaded Dll

Вот. Теперь всё собралось с одним предупреждением. Как бороться с ним, я не знаю. Единственное, ещё могу сказать, что MFC приложение придётся компилировать в режиме Use MFC as External Dll. Удачи в нелёгком!

Используются технологии uCoz