gpt4 book ai didi

c - Linux (GLNXA64) 使用 mxCreateUninitNumericMatrix R2013b

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:44 25 4
gpt4 key购买 nike

在一个 MEX 文件中,我使用以下命令创建了一个输出矩阵(工作正常):

plhs[0] = mxCreateNumericMatrix((mwSize)destLen, 1, mxUINT8_CLASS, mxREAL);

为了加速,我想使用未初始化的动态内存,这导致我使用未记录命令:

plhs[0] = mxCreateUninitNumericMatrix((mwSize)destLen, 1, mxUINT8_CLASS, mxREAL);

在 Win32 和 Win64 中也能很好地工作。

在我的 Linux 环境中使用完全相同的代码会导致编译器发出以下警告:

warning: assignment makes pointer from integer without a cast [enabled by default]

并且代码崩溃,这表明返回的整数值不是指向正确内存地址的那个值。

如何使用 mxCreateUninitNumericMatrix

最佳答案

未记录的 MEX 函数在 mex.h 头文件中没有相应的原型(prototype),因此您必须自己明确编写一个。在这种情况下,它将是:

EXTERN_C mxArray *mxCreateUninitNumericMatrix(mwSize m, mwSize n, 
mxClassID classid, mxComplexity flag);

EXTERN_C 宏扩展为 extern "C" 如果您使用的是 C++,否则扩展为 extern 在 C 中,这样您将获得 correct linkage .

在 C(不是 C++)中,任何 undeclared 函数都被假定为返回整数的外部函数(我认为至少 GCC 编译器是这样)。

关于c - Linux (GLNXA64) 使用 mxCreateUninitNumericMatrix R2013b,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20516263/

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