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예외: 기본 라이브러리에 필수 내보내기가 없습니다.