전화 : - 프레임 워크 3.5 - 86 모드를 비주얼 스튜디오 2013와 함께 컴파일액세스 위반 오류 같은 VB6 코드에서 DLL
[DllImport("..\\..\\dll\\Com3964r.dll", EntryPoint = "plc_fetchword")]
public static extern void PLCReadWord(
int com,
int Db,
int Dw,
int data,
int RisOper);
:
Public Declare Sub PLCReadWord Lib "COM3964R.dll" Alias "plc_fetchword" _
(com As Long, _
Db As Long, _
Dw As Long, _
data As Long, _
RisOper As Long)
C#을 측면에서처럼 변환됩니다. 내 시스템에는 64 비트 CPU와 64 비트 Windows 10이 있습니다.
아래의 코드에서 오류가 발생하면 프로그램 시스템을 실행하십시오. 나는 myDummyData
과 myDummyError
(두 종류 Int32
)가 기록되지 수 있다고 생각 :
ClassPLC.PLCReadWord(Convert.ToInt32(txtCommPort.Text),
Convert.ToInt32(txtDbRead.Text),
Convert.ToInt32(txtDwRead.Text),
myDummyData, myDummyError);
받은 오류는 무엇입니까? 프로그램을 실행할 때 응용 프로그램이 실행되는 위치와 관련하여 dll 디렉토리에 dll 디렉토리가 2 개 있고 dll 디렉토리에 있는지 확인하십시오. Com3964r.dll을 응용 프로그램과 함께 배포 할 수없는 이유가 있습니까? 그렇다면 \\ .. \\ dll \\을 DllImport에서 제거 하시겠습니까? – denvercoder9
PLCReadWord 함수 호출시 "액세스 위반 오류 처리되지 않음"오류가 발생했습니다. 디렉토리 경로 표기법에 아무런 문제가 없습니다. PLCOpenPort 및 PLC ClosePort는 문제없이 실행됩니다. 이것들은 dll이 반환 된 값을 기다리지 않고 값을 보낼뿐입니다. 그러나 PLCReadWord는 myDummyData 및 myDummyError를 쓸 수 없습니다. – hatcuba