根据https://www.mathworks.com/help/matlab/apiref/mxisclass.htmlFortran的mxIsDouble的返回值(也为mxIsSingle和mxIsClass)为INTEGER * 4。
这是我的问题:
应该始终将mxIsDouble的声明设为>>
INTEGER * 4 :: mxIsDouble吗?
如果我声明为]怎么办>
INTEGER :: mxIsDouble
或
LOGICAL :: mxIsDouble ?
背景:在为某些Fortran旧版代码编写MATLAB接口时遇到了这些问题。我正在使用Linux的64位PC上工作,但我的目标是编写portable
非常感谢!
根据https://www.mathworks.com/help/matlab/apiref/mxisclass.html,Fortran的mxIsDouble的返回值(也是mxIsSingle和mxIsClass)是INTEGER * 4。这是我的问题:...
您应该使用INTEGER * 4,因为这与MATLAB API文档匹配,无论它是非标准的。不要使用INTEGER,因为根据您的设置,它可能会编译为64位整数,并且与库函数不匹配。记住,您要链接到一个已编译的库函数,该函数将返回32位整数……您没有在重新编译mxIsDouble函数。例如,
INTEGER*4, external :: mxIsDouble