4-오프셋 위치에 객체 필드가 포함되어 있기 때문에 비객체 필드가 올바르게 정렬되거나 중첩되어 있습니다.
1524 단어 .net-core
TypeLoadException: 프로그램 집합'ECS.GUI.Define,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null'에서 형식'ECS.GUI.Define.ArmgAimPos'를 불러올 수 없습니다. 4번 오프셋 위치에 대상 필드가 포함되어 있기 때문에 이 필드는 대상이 아닌 글자로 정확하게 정렬되거나 중첩되지 않거나 겹쳐집니다
비정상적으로 나타나는 키워드는 4 오프셋 위치에 객체 필드를 포함하는 것입니다. 대상을 찾으면 공용체가 됩니다.
// StructLayout
// Explicit FieldOffset
[StructLayout(LayoutKind.Explicit)]
public struct ArmgAimPos
{
[FieldOffset(0)] public BayType type;
[FieldOffset(4)] public string ContainerID;
[FieldOffset(8)] public string JobID;
FieldOffset 속성을 사용하여 공통 및 강제 유형 변환
필드에서 시작하는 구조의 오프셋을 사용하여 FieldOffsetAttribute 클래스의 새 인스턴스를 초기화합니다.
c#
public FieldOffsetAttribute (int offset);
매개 변수
offset Int32
구조의 시작에서 필드의 시작까지의 오프셋(바이트)입니다.
표현 가능한 개념은 원리는 실제적으로 C++와 같이 int[]형의 변수를byte[]형 변수와 같은 메모리 영역으로 가리키고 C++에서dat가char수조의 첫 번째 주소를 가리키는 것과 같다.마찬가지로 이러한 구조체의 기능은 C++의 공용체와 같다. 즉, 하나의 구조는 여러 가지 데이터 유형으로 할 수 있고 구체적인 어떤 유형은 상황에 따라 결정된다.
예외 수정 방법:
프롬프트 제목과 같이: 4 오프셋 위치에 이미 개체가 아닌 필드가 있으므로 오프셋 수를 뒤로 이동하면 됩니다.
// StructLayout
// Explicit FieldOffset
[StructLayout(LayoutKind.Explicit)]
public struct ArmgAimPos
{
[FieldOffset(0)] public BayType type;
[FieldOffset(8)] public string ContainerID;
[FieldOffset(16)] public string JobID;
[ FieldOffset( 8)] public string ContainerID; 오프셋이 8로 수정됨, 문제 해결
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ASP. NET Core 응용 프로그램 발표 및 배치 안내프로젝트 를 로 컬 디 렉 터 리 에 발표 합 니 다 왼쪽 에서 폴 더 를 선택 하고 설정 을 만 듭 니 다 XShell 을 통 해 CentOS 7 서버 에 연결 하여 작 동 합 니 다. 사이트 디 렉 터 리 를 만...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.