【发布时间】:2017-03-31 05:25:14
【问题描述】:
我正在尝试在 Fortran 中编写一些数字功能,以便以后在 Excel 中访问。我正在使用 Office 2013(64 位)、Visual Studio 2015“社区”和英特尔 Fortran(英特尔 Parallel Studio XE 2017);而且我能够正确编译可执行程序。我还能够生成我认为是正确的 DLL 文件。
这是我从this tip 编写的一个最小的 Fortran 代码示例:
function id(x)
!DEC$ ATTRIBUTES DLLEXPORT :: id
integer :: id, x
id = x
return
end function
我在 Excel 端的 Sheet1 的 VBA 代码下有这个:
Option Explicit
Option Base 1
Public Declare PtrSafe _
Function id Lib "mydll.dll" _
(ByVal x As Integer) As Integer
通过这样做,我设法让 Excel 中的公式栏自动完成函数名称,但评估任何实例都会导致单元格短暂闪烁 0,然后变为 #VALUE!。
我在组合/货物崇拜方式中尝试了很多东西:使用 ByRef 而不是 ByVal,让函数仅使用整数或单精度 (real*4) 或双精度 (real*8 ) 浮动,然后是更没有意义的事情。
我终于用完了要混搭的随机键组合,而且很少有资源涵盖这个确切的用例。如果我必须将其归结为比“下一步做什么”更精确的内容:
- 我遇到问题是因为数字类型还是与 Fortran 和 Excel 世界之间的“阻抗不匹配”相关的问题?
- 我是否缺少必要的样板、胶水代码等?
【问题讨论】:
标签: visual-studio fortran excel-addins intel-fortran