【发布时间】:2012-05-11 15:22:12
【问题描述】:
我编写了一个 C++ 应用程序,其中包括外部库 glpk 和 boost,并绑定到 Matlab API。在 Ubuntu 上使用 mex 在 Matlab 中编译工作正常,程序运行没有问题。
现在要在 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/local/include 包含 boost 库的头文件(仅头库)
- 路径 /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 头文件。有什么想法可以解决这个问题吗?
【问题讨论】:
标签: c++ matlab cross-compiling mex mingw-w64