Matlab mex 无法构建,但 gcc 可以
Matlab mex can not build but gcc can
我是 Matlab 的新手,正在尝试构建一个 C 文件。使用 gcc(64 位 Ubuntu 中的 4.8.4)可以很好地编译代码。但是当我尝试使用 mex
构建时,它显示以下错误:
error: exponent has no digits
我不确定我做错了什么。错误是 in this file. Complete error log is here.
当我使用gcc 编译代码时,没有错误。我没有为 gcc 提供任何特殊参数。据我所知,mex
正在使用 gcc
,所以我不明白为什么 mex
无法构建代码。
我对 C 编程知之甚少,非常感谢任何帮助!
编辑:
为了说明更多,我在两个文件中找到了源代码:
文件 1 具有带 main
函数的 C 代码,并使用来自 this 的函数
文件(mex
无法构建)。
文件 2 具有 S-Function
的 C 代码,它调用了文件 1 的 main
函数。文件 2 有一个 include
语句来包含 File 1
.
当我说我可以使用 gcc
构建时,我只是使用以下命令构建 File 1
:gcc file1.c -o file1
。我认为不使用 gcc
构建 File 2
对我的问题没有影响,因为只有文件 1 使用 mex
无法构建的文件中的那些函数。
我使用 Matlab mex file2.c
中的这个命令来构建并得到了错误。
对于 C 代码,您可能需要为 C99 启用 GNU 扩展 (-std=gnu99
)。如 my previous post 中关于启用 C99 的描述,将其传递给 mex
:
mex -v -largeArrayDims CFLAGS="$CFLAGS -std=gnu99" mexSouce.c
默认不起作用的原因是因为 mex
喜欢选择 ANSI standard,通常不是最新的。
我是 Matlab 的新手,正在尝试构建一个 C 文件。使用 gcc(64 位 Ubuntu 中的 4.8.4)可以很好地编译代码。但是当我尝试使用 mex
构建时,它显示以下错误:
error: exponent has no digits
我不确定我做错了什么。错误是 in this file. Complete error log is here.
当我使用gcc 编译代码时,没有错误。我没有为 gcc 提供任何特殊参数。据我所知,mex
正在使用 gcc
,所以我不明白为什么 mex
无法构建代码。
我对 C 编程知之甚少,非常感谢任何帮助!
编辑:
为了说明更多,我在两个文件中找到了源代码:
文件 1 具有带
main
函数的 C 代码,并使用来自 this 的函数 文件(mex
无法构建)。文件 2 具有
S-Function
的 C 代码,它调用了文件 1 的main
函数。文件 2 有一个include
语句来包含File 1
.
当我说我可以使用 gcc
构建时,我只是使用以下命令构建 File 1
:gcc file1.c -o file1
。我认为不使用 gcc
构建 File 2
对我的问题没有影响,因为只有文件 1 使用 mex
无法构建的文件中的那些函数。
我使用 Matlab mex file2.c
中的这个命令来构建并得到了错误。
对于 C 代码,您可能需要为 C99 启用 GNU 扩展 (-std=gnu99
)。如 my previous post 中关于启用 C99 的描述,将其传递给 mex
:
mex -v -largeArrayDims CFLAGS="$CFLAGS -std=gnu99" mexSouce.c
默认不起作用的原因是因为 mex
喜欢选择 ANSI standard,通常不是最新的。