Matlab 2011b и mingw64 - PullRequest
       9

Matlab 2011b и mingw64

0 голосов
/ 25 февраля 2012

Я следовал указаниям, которые нашел здесь .

Я почти завершил работу.Следующий раздел является абзацем работы по пакетной конвертации.Я создал командный файл для преобразования множества библиотек DLL, предварительно созданных MSVC в Matlab 2011b для Windows 7 (64-разрядная версия).

    set path=C:\MinGW64\bin;C:\mingw\msys\bin;

    mkdir lib
    mkdir bin
    @echo y |copy *.dll  .\bin
    @echo y |copy *.lib  .\lib

    @echo EXPORTS >libmex.def
    @echo EXPORTS >libmx.def
    @echo EXPORTS >libmat.def
    @echo EXPORTS >libeng.def
    @echo EXPORTS >libmwlapack.def


    c:\mingw64\bin\pexports ./bin/libmex.dll | sed "s/^_//" > libmex.def
    c:\mingw64\bin\pexports ./bin/libmat.dll | sed "s/^_//" > libmat.def
    c:\mingw64\bin\pexports ./bin/libeng.dll | sed "s/^_//" > libeng.def
    c:\mingw64\bin\pexports ./bin/libmwlapack.dll | sed "s/^_//" >libmwlapack.def
    gendef ./bin/libmx.dll

    echo "Add the mexErrMsgTxt string to each def file,"
    echo "then press any key to continue the conversion process"
    pause

    lib /machine:x64 /def:libmex.def /name:.\bin\libmex.dll /out:.\lib\libmex.lib
    lib /machine:x64 /def:libmx.def  /name:.\bin\libmx.dll  /out:.\lib\libmx.lib
    lib /machine:x64 /def:libmat.def /name:.\bin\libmat.dll /out:.\lib\libmat.lib
    lib /machine:x64 /def:libeng.def /name:.\bin\libeng.dll /out:.\lib\libeng.lib
    lib /machine:x64 /def:libmwlapack.def /name:.\bin\libmwlapack.dll /out:.\lib\libmwlapack.lib

    c:\mingw64\bin\x86_64-w64-mingw32-dlltool --kill-at -U -d libmex.def -l /lib/libmex.a
    c:\mingw64\bin\x86_64-w64-mingw32-dlltool --kill-at -U -d libmat.def -l ./lib/libmat.a
    c:\mingw64\bin\x86_64-w64-mingw32-dlltool --kill-at -U -d libeng.def -l ./lib/libeng.a
    c:\mingw64\bin\x86_64-w64-mingw32-dlltool --kill-at -U -d libmx.def -l./lib/libmx.a
    c:\mingw64\bin\x86_64-w64-mingw32-dlltool --kill-at -U -d libmwlapack.def -l ./lib/libmwlapack.a

Makefile для engwindemo.exe:

    LIBS= -Lc:/mingw64/lib ../lib/libeng.a ../lib/libmx.a ../lib/
    libmex.a ../lib/libmat.a

    CC=c:/mingw64/bin/gcc -m64 -O3 -I../include -Ic:/mingw64/include

    EXE=../bin/engwindemo.exe

    SRC=engwindemo.c

    all:$(EXE)

    $(EXE):  $(SRC)
           $(CC) $(SRC) $(LIBS) -L../lib -ladvapi32 -luser32 -lgdi32 -lkernel32 -
    lmingwex -o $(EXE)
           @rm -f *.o*

При использовании (mingw64) gcc процессы компиляции и компоновки в порядке.Запустив engwindemo.exe, я получаю эту ошибку:

_engЗакрыть ошибку точки входа (в libeng.dll)

В mingw64 как создать автономное приложение(engwindemo.exe) который вызывает из встроенных в libeng.dll функций (Matlab R2011b)?

1 Ответ

0 голосов
/ 26 февраля 2012

Спасибо всем, ответ!Я успешно построил!В Matlab R2011b win32 / 64 просто настраивается в среде cygwin (x86_64-w64-mingw32-gcc 4.5.2) без какого-либо преобразования dll-файла.Часть основной настройки выглядит следующим образом:

  1. Установите MATLABROOT в форме короткого имени файла (длинное имя файла может быть в порядке.)

    MATLABROOT = c: / Progra~ 1 / MATLAB / R2011b

  2. , связывающий первичные библиотеки, созданные MSVC

    LIBS = -L $ (MATLABROOT) / bin / win64 -lmex -lmx -lmwlapack -lmwblas -leng

  3. объявляет gcc с флагами

    CC = x86_64-w64-mingw32-gcc

    CFLAG = -Wall -m64 -O3-I $ (MATLABROOT) / extern / include

    MEXFLAG = -m64 -shared -DMATLAB_MEX_FILE -I $ (MATLABROOT) / extern / include -Wl, - экспорт всех символов $ (LIBS)

  4. Другие дополнительные параметры, чтобы компилятор был доволен.

    И, наконец, в оболочке cygwin consloe или mingw64 просто создайте этот проект.

...