C#에서 C/C++ 동적 라이브러리 호출 시 구조체 및 배열 매핑
구조체 전달 방식
C++ 코드
extern "C" __declspec(dllexport) bool GetVersionInfo(OSINFO* info);
extern "C" __declspec(dllexport) bool GetVersionRef(OSINFO& info);
C# 구조체 정의
[StructLayout(LayoutKind.Sequential)]
public struct OSINFO
{
public int osVersion;
public int majorVersion;
public int minorVersion;
public int buildNu ...
7월 19일 16:55에 게시됨
C#에서 구조체의 메모리 레이아웃을 제어하여 유니온과 유사한 동작 구현하기
C#는 타입 안전성과 자동 메모리 관리를 중시하는 언어로, 일반적으로 변수 간 메모리 공유를 금지하지만, 특정 상황에서는 고성능 요구에 따라 메모리 레이아웃을 직접 조작할 수 있는 기능을 제공한다. 이 기능을 활용하면 C++의 union처럼 여러 타입이 동일한 메모리 공간을 공유하는 효과를 얻을 수 있다.
핵심 기술: 구조체의 명시적 메모리 배치
기본적으로 C#의 구 ...
6월 15일 20:15에 게시됨