小编And*_*las的帖子

通过Type将字符数组从VBA传递到Fortran DLL会破坏其他Type成员

信不信由你,这个标题大约和我能做到的一样短,仍然描述我遇到的问题!

所以这就是场景:我从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)

excel vba fortran gfortran fortran90

9
推荐指数
1
解决办法
271
查看次数

标签 统计

excel ×1

fortran ×1

fortran90 ×1

gfortran ×1

vba ×1