2012-05-02 2 views
3

Я написал приложение C++, включающее внешние библиотеки glpk и boost со связыванием с API Matlab. На Ubuntu компиляция в Matlab с использованием mex отлично работает, программа работает без проблем.Проблемы кросс-компиляции oct-файла Matlab с использованием Mingw64 на Ubuntu

Теперь, чтобы использовать одно и то же приложение на платформе Windows, я хотел бы перекрестно скомпилировать его, используя Mingw64. В соответствии с этим thread это можно сделать с помощью следующей команды:

x86_64-w64-mingw32-gcc -m64 -shared -I"/usr/local/MATLAB/R2011a/extern/include" -I"/usr/local/include" -I"/usr/include" -DMATLAB_MEX_FILE -o output.mexw64 input.cpp -L"/usr/local/MATLAB/R2011a/bin/glnxa64/" -lmex -lmx -lmat -leng -L"/usr/lib" -lglpk 
  • Путь /USR/местные/включить содержит файлы заголовков для библиотеки повышающего (только заголовок библиотеки)
  • Путь /USR/включать содержит файлы заголовков для GLPK библиотеки
  • Путь /USR/библиотека содержит исходные файлы для GLPK библиотеки

Но работает эта команда дает мне ошибку, что есть conflicting declarations типа:

/usr/include/sys/types.h:110:19: error: conflicting declaration ‘typedef __ssize_t ssize_t’ 
/usr/lib/gcc/x86_64-w64-mingw32/4.6/../../../../x86_64-w64-mingw32/include/_mingw.h:394:35: error: ‘ssize_t’ has a previous declaration as ‘typedef long long int ssize_t’ 

кажется, что путь /USR/включать вызывает проблемы для компилятора. Но необходимо включить файлы заголовков glpk. Любые идеи для решения проблемы?

ответ

0

Если ваши заголовки glpk находятся в/usr/include, скорее всего, вы не скомпилировали библиотеку для Windows. Вы должны перекрестно скомпилировать все библиотеки для целевой платформы (и установить их в/usr/x86_64-w64-mingw32 (если я правильно приведу ваши данные об установке).

Один большой вопрос, который вы не сможете сделать решите: ваш Matlab - это Linux, и он не содержит каких-либо совместимых с Windows библиотек, поэтому вам не повезло.

+0

Теперь я установил [cygwin] (http://www.cygwin.com) на Windows, чтобы использовать DLL Matlab. Но теперь я получаю ошибки формы: 'error: ':: strtold' не был объявлен – Reza

+0

Вам не нужен Cygwin для запуска двоичных файлов Matlab или MinGW. есть 'strtold'. – rubenvb

+0

да, я знаю, но мне это нужно для библиотеки glpk – Reza