簡體   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