繁体   English   中英

在Ubuntu上使用Mingw64交叉编译Matlab oct文件的问题

[英]Problems cross-compiling a Matlab oct-file using Mingw64 on Ubuntu

我写了一个C ++应用程序,包括外部库glpkboost ,绑定到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
  • Path / usr / local / include包含boost库的头文件(仅头文件库)
  • Path / usr / include包含glpk库的头文件
  • Path / usr / lib包含glpk库的源文件

但运行此命令会给我一个错误,即类型的conflicting declarations存在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头文件。 有什么想法来解决这个问题吗?

如果您的glpk标头位于/ usr / include中,则很可能您没有为Windows编译库。 您应该交叉编译目标平台的所有库(并将它们安装在/ usr / x86_64-w64-mingw32中(如果我正确推断出您的安装详细信息)。

你无法解决的一个重要问题是:你的Matlab是Linux,并且不包含任何Windows可链接库,所以你运气不好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM