外部ライブラリglpkを含む C++ アプリケーションを作成し、Matlab API へのバインドを使用してブーストしました。mex を使用して Matlab でコンパイルする Ubuntu では、プログラムは問題なく実行されます。
Windows プラットフォームで同じアプリケーションを使用するために、Mingw64 を使用してクロスコンパイルしたいと考えました。このスレッドに対応して、次のコマンドで実行できます。
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/local/includeには、ブースト ライブラリ (ヘッダーのみのライブラリ) のヘッダー ファイルが含まれています。
- パス/usr/includeには glpk ライブラリのヘッダー ファイルが含まれています
- パス/usr/libには 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/includeがコンパイラに問題を引き起こしているようです。ただし、glpk ヘッダー ファイルを含める必要があります。問題を解決するためのアイデアはありますか?