콘텐츠로 이동
무료 평가 시작

PDComm.PdcommRuntime

클래스

PDComm 네이티브 라이브러리를 로드하고 그 ABI가 이 바인딩과 호환되는지 확인합니다.

public static class PdcommRuntime

시작할 때 네이티브 라이브러리(pdcomm_ffi.dll, libpdcomm_ffi.so 또는 libpdcomm_ffi.dylib)의 절대 경로로 PdcommRuntime.Initialize를 한 번 호출합니다. 호출하지 않으면 첫 API 호출이 기본 검색 위치(바인딩의 어셈블리 디렉터리, 애플리케이션 디렉터리, 운영 체제의 안전한 디렉터리)에서 런타임을 초기화합니다.

초기화는 라이브러리가 보고하는 ABI 버전(ABI 0.17부터 이 바인딩이 빌드된 버전까지)과 모든 핵심 내보내기의 존재를 확인한 다음, 이 어셈블리의 모든 네이티브 호출을 그 라이브러리로 연결합니다. 진단 로깅이나 정형 프로세스 프로그램 같은 선택적 기능 영역은 처음 사용할 때 자체 내보내기를 확인하며, 로드된 라이브러리에 해당 내보내기가 없으면 NotSupportedException을 throw합니다.

모든 멤버는 스레드로부터 안전합니다. 한 번 초기화된 런타임은 언로드하거나 다른 라이브러리로 바꿀 수 없습니다.

PdcommRuntime.Initialize(args[0]);
var limits = new SecsLimits(4096, 1024, 32, 8);
using var label = SecsItem.FromAscii("Temperature", limits);
Console.WriteLine($"ABI {PdcommRuntime.AbiVersion}; SECS-II {Convert.ToHexString(label.Encode())}");

멤버

Initialize

메서드

PDComm 네이티브 라이브러리를 로드하고 검증합니다.

public static void Initialize(string? libraryPath = null)

초기화가 성공한 뒤 이 메서드를 다시 호출할 때 libraryPath가 null이거나 같은 파일이면 아무 동작도 하지 않습니다. 시도가 실패하면 라이브러리를 해제하고 런타임을 초기화되지 않은 상태로 두므로 다시 시도할 수 있습니다.

이 메서드는 스레드로부터 안전합니다.

매개변수

이름설명
libraryPath네이티브 라이브러리의 절대 경로이거나, 바인딩의 어셈블리 디렉터리, 애플리케이션 디렉터리, 운영 체제의 안전한 디렉터리에서 pdcomm_ffi를 검색하려면 null입니다.

참고

  • ArgumentException 예외: libraryPath가 절대 경로가 아닙니다.
  • InvalidOperationException 예외: 런타임이 이미 다른 라이브러리 경로로 초기화되었습니다.
  • DllNotFoundException 예외: 라이브러리를 찾거나 로드할 수 없습니다.
  • BadImageFormatException 예외: 파일이 이 프로세스용 네이티브 라이브러리가 아닙니다.
  • NotSupportedException 예외: 라이브러리가 이 바인딩이 지원하는 범위 밖의 ABI 버전을 보고합니다.
  • EntryPointNotFoundException 예외: 라이브러리에 버전 내보내기나 필수 핵심 내보내기가 없습니다.

AbiVersion

속성

로드된 네이티브 라이브러리의 ABI 버전을 major.minor 형식으로 가져옵니다.

public static Version AbiVersion { get; }

필요하면 이 속성을 읽을 때 기본 검색 위치에서 런타임이 초기화됩니다.

반환값

네이티브 ABI 버전입니다. 예를 들면 0.30입니다.

참고

  • DllNotFoundException 예외: 런타임이 초기화되지 않았고 기본 라이브러리를 찾을 수 없습니다.
  • NotSupportedException 예외: 기본 라이브러리의 ABI 버전이 지원되지 않습니다.
  • EntryPointNotFoundException 예외: 기본 라이브러리에 필수 내보내기가 없습니다.