[VB6 ] Dll檔呼叫規格錯誤
最近在整合Fortran跟VB6的時候發生Dll檔怎樣也掛不上去的狀況
找了很多資料還是無法找到正確解答
只好上來求助鄉民們了Q___Q
我在測試的時候 寫了一個Fortran檔
內容為
real function circle_area(radius)
!DEC$ ATTRIBUTES DLLEXPORT :: CIRCLE_AREA
!DEC$ ATTRIBUTES ALIAS : "Circle_Area" :: CIRCLE_AREA
implicit none
real radius
real, parameter :: PI = 3.14159
circle_area = radius*radius*PI
return
end function
接著用g95跟dlltool來編譯,產生 .o .dll .def三種檔案
由.def中可以得知進入的端口是 circle_area__
因此我在VB6裡面寫
Private Declare Function circle_area__ Lib "forlib.dll" (r As Single) As Single
Private Sub Command1_Click()
Dim r As Single
Dim a As Single
r = Val(Text1.Text)
a = circle_area__(r)
Label3 = Str(a)
End Sub
結果,在執行時,一直顯示 a = circle_area__(r) 這行有問題
跟我說 "呼叫規格錯誤"
我上網找了很多範例,但是都沒有看到這部分的說明
不知道是編譯dll檔的過程出了問題還是程式碼敘述不對?
希望有強者可以救救小弟Q___Q
我的g95跟dlltool的指令是
1. 產生.o檔
-c $(FileName) -Wuninitialized -Wimplicit-none -Wunused-vars -Wunset-vars
-fbounds-check -ftrace=full -O2
2. 產生.def檔
-z $(FileTitle).def --export-all-symbols $(FileTitle).o
3.產生.dll檔
-shared -mrtd -o $(FileTitle).dll $(FileTitle).o $(FileTitle).def
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.218.125
※ 文章網址: https://www.ptt.cc/bbs/Visual_Basic/M.1422043917.A.34D.html
推
01/26 21:44, , 1F
01/26 21:44, 1F
→
01/27 21:32, , 2F
01/27 21:32, 2F
→
01/27 21:32, , 3F
01/27 21:32, 3F
→
01/27 21:33, , 4F
01/27 21:33, 4F
→
01/27 21:33, , 5F
01/27 21:33, 5F
→
01/27 21:33, , 6F
01/27 21:33, 6F
→
01/27 21:34, , 7F
01/27 21:34, 7F
→
01/28 16:23, , 8F
01/28 16:23, 8F
→
01/28 20:30, , 9F
01/28 20:30, 9F
→
01/28 20:30, , 10F
01/28 20:30, 10F
Visual_Basic 近期熱門文章
PTT數位生活區 即時熱門文章