Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9922 / 13646 ツリー ←次へ | 前へ→

【24754】dllファイルの読み込み方法について junpei 05/5/8(日) 14:08 質問[未読]
【24758】Re:dllファイルの読み込み方法について bykin 05/5/8(日) 18:20 回答[未読]

【24754】dllファイルの読み込み方法について
質問  junpei  - 05/5/8(日) 14:08 -

引用なし
パスワード
    【17108】の質問内容についてなのですが

私は、FORTRANで作ったdllファイルを使用したいのですが

「エントリmultcallがDLLファイル〜内に見つかりせん」とエラーになってしまいます。

なんとか解決する方法はないでしょうか?


[VBAソース]
Private Declare Function multcall Lib _
"C:\計算\x1.dll" _
(ByVal a As Double, ByVal b As Double, ByVal c As Double) As Double

Sub Test()
Dim a As Double, b As Double, c As Double
a = cells(1,1)
b = cells(1,2)
Call multcall(c, a, b)
msgbox c
End Sub
---------------------------------------------------------------------
[Fortranソース]
subroutine multcall( c, a, b )
implicit none
dllexport multcall
real :: a, b, c
c = a * b      
end

fortranでの内容は 引数a × 引数b の結果を cとして返すだけです。
引数はすべて実数で宣言してあります。

【24758】Re:dllファイルの読み込み方法について
回答  bykin  - 05/5/8(日) 18:20 -

引用なし
パスワード
   こんばんわ。

フォートランのことはさっぱりわかりまへんが・・・
原因はフォートランのソース側にあるんやないかな?
たぶん関数のエクスポートができてへんのやと思います。

ちょっとネットで調べてみたら、
!DEC$ ATTRIBUTES DLLEXPORT :: 関数名
っていうステートメントが必要みたいでっせ。

subroutine multcall( c, a, b )
!DEC$ ATTRIBUTES DLLEXPORT :: multcall
implicit none
dllexport multcall
real :: a, b, c
c = a * b      
end

なんて感じなんとちゃうかな?自信ないけど(^^;;

この情報のソースURLは↓
http://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/pg/pg08_01.htm

上記のトップページは↓
http://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/cvf_frame.htm

これ以上は全然わからんから、後はよろしゅうたのんまっさ。
ほな。

9922 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free