信不信由你,这个标题大约和我能做到的一样短,仍然描述我遇到的问题!
所以这就是场景:我从VBA调用Fortran DLL,DLL使用用户定义的类型或Fortran名称(结构?)作为参数,并将类型复制回调用者进行验证.
该类型具有一个固定长度字符数组和一些磨机整数运行.
我已经注意到在这个字符数组之后定义的任何属性中有一些有趣的行为,我将在下面描述,在我描述我的煮沸测试设置之后:
Fortran边:
这是主程序:
SUBROUTINE characterArrayTest (simpleTypeIn, simpleTypeOut)
use simpleTypeDefinition
!GCC$ ATTRIBUTES STDCALL :: characterArrayTest
type(simpleType), INTENT(IN) :: simpleTypeIn
type(simpleType), INTENT(OUT) :: simpleTypeOut
simpleTypeOut = simpleTypeIn
END SUBROUTINE characterArrayTest
Run Code Online (Sandbox Code Playgroud)
这是simpleTypeDefinition模块文件:
Module simpleTypeDefinition
Type simpleType
character (len=1) :: CharacterArray(1)
!The length of the array is one here, but modified in tests
integer (kind=2) :: FirstInteger
integer (kind=2) :: SecondInteger
integer (kind=2) :: ThirdInteger
End Type simpleType
End Module simpleTypeDefinition
Run Code Online (Sandbox Code Playgroud)
编译步骤:
gfortran -c simpleTypeDefinition.f90 characterArrayTest.f90
gfortran -shared -static -o …Run Code Online (Sandbox Code Playgroud)