C#에서 실행할 때 크로스 플랫폼 DLL 가져오기 경로 지정
C# 프로젝트에 외부 C DLL을 통합할 때 정적으로 정의된 값을 넘어서 DLL의 가져오기 경로를 사용자 지정하는 것이 어려울 수 있습니다. 이 문서에서는 특히 런타임에 가져오기 경로를 지정하는 데 중점을 두고 이 문제를 다룹니다.
DllImport
특성을 사용하는 것이 여전히 선호되는 방법이지만 DLL 디렉터리에서 상수 문자열 인수를 사용해야 하는데 이는 제한 사항입니다. 이러한 견고성은 DLL 위치가 다양한 사용자 환경에 따라 달라질 수 있는 상황에서 방해가 될 수 있습니다.
상대경로를 이용한 풀이
일반적인 믿음과는 달리 DllImport
부동산은 여전히 이용 가능합니다. 절대 경로에 의존하는 대신 DLL에 대한 상대 경로를 지정하면 문제가 해결됩니다. DLL의 기본 검색 순서에는 응용 프로그램의 디렉터리가 포함되므로 설치 중에 DLL을 찾을 수 있습니다.
SetDllDirectory 사용
상대 경로가 작동하지 않거나 경로를 동적으로 사용자 정의해야 하는 경우 SetDllDirectory
기능을 사용할 수 있습니다. 가져온 DLL 함수에 액세스하기 전에 이 함수를 호출하면 기본 DLL 검색 경로를 수정할 수 있습니다.
SetDllDirectory의 P/Invoke 문
SetDllDirectory
을 사용하려면 다음 P/Invoke 가져오기를 수행하세요.
<code class="language-csharp">[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern bool SetDllDirectory(string lpPathName);</code>
DLL 검색 경로는 lpPathName
매개변수를 동적으로 설정하여 런타임에 조정할 수 있습니다.
위 내용은 C#에서 런타임 시 플랫폼 간 DLL 가져오기 경로를 어떻게 지정할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!