mxIsDouble,mxIsSingle和mxIsClass的返回类型(用于Fortran的MATLAB mex)

问题描述 投票:0回答:1

根据https://www.mathworks.com/help/matlab/apiref/mxisclass.htmlFortran的mxIsDouble的返回值(也为mxIsSingle和mxIsClass)为INTEGER * 4。

这是我的问题:

  1. 应该始终将mxIsDouble的声明设为>>

    INTEGER * 4 :: mxIsDouble吗?

  2. 如果我声明为]怎么办>

    INTEGER :: mxIsDouble
    

LOGICAL :: mxIsDouble ?
  1. 据说INTEGER * 4不是标准的,应该用种类代替。我该怎么办?我知道INTEGER(KIND = 4)不正确。另外,为什么mex继续使用这种nonstandard功能?

    背景:在为某些Fortran旧版代码编写MATLAB接口时遇到了这些问题。我正在使用Linux的64位PC上工作,但我的目标是编写portable

  2. mex文件。

非常感谢!

根据https://www.mathworks.com/help/matlab/apiref/mxisclass.html,Fortran的mxIsDouble的返回值(也是mxIsSingle和mxIsClass)是INTEGER * 4。这是我的问题:...

matlab fortran mex matlab-deployment
1个回答
1
投票

您应该使用INTEGER * 4,因为这与MATLAB API文档匹配,无论它是非标准的。不要使用INTEGER,因为根据您的设置,它可能会编译为64位整数,并且与库函数不匹配。记住,您要链接到一个已编译的库函数,该函数将返回32位整数……您没有在重新编译mxIsDouble函数。例如,

INTEGER*4, external :: mxIsDouble
© www.soinside.com 2019 - 2024. All rights reserved.