2015-10-15 31 views
1

我是新來的Matlab,並試圖建立一個C文件。代碼用gcc(64位Ubuntu中的4.8.4)編譯得很好。但是,當我嘗試建立與mex,它顯示了以下錯誤:Matlab的mex不能建立,但海合會可以

error: exponent has no digits 

我不知道我在做什麼錯。錯誤是in this file。完成error log is here

當我使用gcc編譯代碼時,沒有錯誤。我沒有提供任何特別的參數給gcc。據我所知,mex正在使用gcc,所以我不明白爲什麼mex無法構建代碼。

我對C編程知之甚少,任何幫助都非常感謝!

編輯:

爲了澄清更多的,我已經得到了源在兩個文件中:

  • 文件1設有一個main函數的C代碼,並從this file使用函數(mex不能建立)。

  • 文件2具有S-Function的C代碼,該代碼調用文件1的main函數。文件2的include聲明包括File 1

當我說我可以建立使用gcc,我剛建File 1用這個命令:gcc file1.c -o file1。我認爲不建立File 2gcc這裏沒有影響我的問題,因爲只有文件1使用mex無法建立的文件中的那些功能。

我使用Matlab命令mex file2.c這個命令來建立並得到錯誤。

+1

看起來像mex不支持十六進制浮點數,「https:// gcc.gnu.org/onlinedocs/gcc/Hex-Floats.html」,這是行982問題所在。我想你必須傳遞給'mex'選項,告訴在構建代碼時使用GNU擴展 –

+0

顯示成功的gcc命令。 – chappjc

+0

@SeverinPappadeux非常感謝。你能告訴我什麼是GNU擴展,可能,如何將它們傳遞給mex?如果他們是gcc的命令行選項,那麼按照Matlab的文檔很容易通過,但我想不是這種情況。 – giga

回答

1

對於C代碼,您可能需要爲C99啓用GNU擴展(-std=gnu99)。作爲扶持C99在my previous post描述,通過這個來mex

mex -v -largeArrayDims CFLAGS="\$CFLAGS -std=gnu99" mexSouce.c 

默認不起作用的原因是因爲mex喜歡選擇ANSI standard,這往往不是最新的。