VB6で、VC6で作成したDLLを呼び出しているのですが、アクセスバイオレーションが
発生してしまいます。開発経験が乏しいため、アクセスバイオレーションが発生した
場合でどこから調査したらいいのか、わからずこまっています。
何か良いアドバイスがあればお願いします。
<開発環境>
OS:Windows XP SP2
VB6,VC6 SP6
office 2003
アクセスバイオレーションの内容は、
VisualC++
ハンドルされていない例外は、VB6.EXE(NTDLL.DLL)にあります。
0xC0000005:Access Violation
○VBのDLL呼出宣言
Declare Function readRegister Lib UniDesUtl ( _
ByVal rec As Long, _
ByRef retstr As Byte _
) As Long
○変数宣言
Private Type REGISTER_REC2
b(7000) As Byte
End Type
Dim regi2 As REGISTER_REC2
○ソース
Dim fnoOut As Integer
Dim i As Long
Dim j As Long
Dim k As Long
Dim progress As Double
On Error GoTo ERROR1
LblProgress.ForeColor = 0
LblProgress.Caption = "
DoEvents
fnoOut = FreeFile()
Open OutFname For Output As #fnoOut
ProgressBar1.Visible = True
DoEvents
If DataSel = 1 Then
For i = 1 To RegiMax
⇒ アクセスバイオレーション
k = readRegister(i, regi2.b(0))
~~~~~~~~~~~~~~~~~~~~~~~~~~~
If PatientData.densan >= FromDate And PatientData.densan <=
ToDate Then outdata (fnoOut): j = j + 1
これだけのコードではちょっとわからないと思うのですが。
VCのDLLのソース(最低でも関数宣言のところ)が示されないと。。。
ちなみにVCからそのDLLは普通に呼べるのでしょうか?
Blueさん
どうもありがとうございます。
ご迷惑をお掛けしました。
VBのプログラム上にて、DLL参照時の引数にてバグがありました。
単純な間違いでした。
直接VBからVCのDLLを呼び出すことが出来ませんが、VBから
DeclearにてDLL内の関数を呼び出しています。
使用しているDLLは、市販されているものを使用してVCで構築したもの
をVBにて呼び出しています。
お手数お掛けしました。