vb.net 언어에서 dll 함수를 호출하면 "보호된 메모리를 읽거나 쓰기합니다. 이것은 보통 다른 메모리가 손상되었음을 표시합니다."
해결 방법:
바깥 dll 함수를 호출할 때 먼저 모듈 안에서declear를 통해 함수를 성명해야 하고 구조체도 성명해야 한다.모든 데이터의 유형은 dll 설명 문서 안의 것과 일치해야 하며, 절대 소홀히 해서는 안 됩니다!구조체 안에 수조가 있을 때 vb6.0 아래는 직접 크기를 부여할 수 있지만,net 아래에서는 이렇게 하는 것을 허락하지 않습니다.구조체(사실 계승할 수 없는 클래스일 뿐)에서 구조 함수를 성명하고 밖에서 new로 실례 대상을 구축하면 구조 함수를 자동으로 호출할 수 있으며 구조 함수에서 수조 크기를 초기화하면 됩니다!그렇지 않으면 번역이 잘못될 거야!dll 구조 안의 수조 앞에 문장을 붙여서 크기를 제한해야 합니다. 그렇지 않으면 실행할 때 오류가 발생합니다!
예를 들면 다음과 같습니다.
Public Structure VCI_CAN_OBJ
Dim ID As UInt32
Dim TimeStamp As UInt32
Dim TimeFlag As Byte
Dim SendType As Byte
Dim RemoteFlag As Byte
Dim ExternFlag As Byte
Dim DataLen As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> _
Dim data() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=2)> _
Dim Reserved() As Byte
Public Sub New(ByVal a As Int16, ByVal b As Int16)
ReDim data(a)
ReDim Reserved(b)
End Sub
End Structure
그렇습니다!이렇게 하면 이 문제를 해결할 수 있다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.