gpt4 book ai didi

c++ - 在 Ubuntu 上使用 Mingw64 交叉编译 Matlab oct 文件时出现问题

转载 作者:太空狗 更新时间:2023-10-29 23:19:10 24 4
gpt4 key购买 nike

我编写了一个包含外部库的 C++ 应用程序 glpkboost绑定(bind)到 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 头文件。有解决问题的想法吗?

最佳答案

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

一个您无法解决的大难题:您的 Matlab 是 Linux,并且不包含任何 Windows 可链接库,所以无论如何您都不走运。

关于c++ - 在 Ubuntu 上使用 Mingw64 交叉编译 Matlab oct 文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10408887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com