我試圖在Fortran中編寫一些數字功能,以便以後可以在Excel中訪問這些功能。我使用的是Office 2013(64位),Visual Studio 2015「Community」和Intel Fortran(Intel Parallel Studio XE 2017);我能夠正確編譯可執行程序。我也能夠生成DLL文件,我認爲這是正確的。在Fortran中編寫DLL /從Excel調用
這裏有一個最小的Fortran代碼示例我從this tip摸索出:
function id(x)
!DEC$ ATTRIBUTES DLLEXPORT :: id
integer :: id, x
id = x
return
end function
,我有這對VBA代碼下的Excel側的工作表Sheet1:
Option Explicit
Option Base 1
Public Declare PtrSafe _
Function id Lib "mydll.dll" _
(ByVal x As Integer) As Integer
通過這樣做,我設法使用Excel中的公式欄來自動完成函數名稱,但評估任何實例會導致單元格短暫閃爍0,然後變爲#VALUE !.
我試過很多東西在組合/貨物崇拜時尚:使用ByRef
而不是ByVal
,有函數只使用整數或單精度(實數* 4)或雙精度(實數* 8)浮點數和那麼事情就更沒有意義了。
我終於用完了隨機鍵組合來進行混搭,並且有很少的來源覆蓋了這個確切的用例。如果非要我熬下來的東西比更精確的「下一步做什麼」:
- 我會遇到因爲涉及到Fortran和Excel的世界之間的「阻抗不匹配」數字類型什麼的問題?
- 我是否錯過了必要的樣板,膠水代碼等?