> 백엔드 개발 > C++ > 동적 DLL 경로를 C#의 DllImport와 함께 사용할 수 있습니까?

동적 DLL 경로를 C#의 DllImport와 함께 사용할 수 있습니까?

Barbara Streisand
풀어 주다: 2025-01-15 20:15:43
원래의
772명이 탐색했습니다.

Can Dynamic DLL Paths Be Used with C#'s DllImport?

C#의 DllImport는 런타임 동적 경로를 지원합니까?

C#에서 DllImport 특성을 사용하는 경우 일반적으로 DLL에 대한 경로를 정적으로 지정해야 합니다. 그러나 애플리케이션의 설치 경로가 사용자에 따라 달라지는 경우(예: C:UsersuserName...) 절대 경로를 하드코딩하는 것은 실용적이지 않습니다.

기존 방식

이 문제에도 불구하고 상대 경로를 사용하는 것이 좋습니다. DLL 이름만 지정하면 시스템이 응용 프로그램 디렉터리 및 기타 사전 정의된 위치(Windows DLL 로딩 지침에 따라)에서 해당 DLL을 검색합니다.

SetDllDirectory 및 P/Invoke

상대 경로가 필요에 맞지 않으면 SetDllDirectory 기능 사용을 고려해 보세요. 이 기능을 사용하면 런타임 시 기본 DLL 검색 경로를 수정하여 해당 시점에 계산되는 동적 경로를 지정할 수 있습니다.

SetDllDirectory을 사용하려면 Windows API 함수인 P/Invoke를 사용해야 합니다. 해당 내용은 다음과 같습니다.

<code class="language-csharp">[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool SetDllDirectory(string lpPathName);</code>
로그인 후 복사

업적

코드는 다음과 유사해야 합니다.

<code class="language-csharp">SetDllDirectory(Path.GetTempPath() + "..\myLibFolder");

[DllImport("MyAppDll.dll")]
static extern bool MyGreatFunction(int myFirstParam, int mySecondParam);</code>
로그인 후 복사

이렇게 하면 시스템의 표준 검색 순서 이전에 런타임 포크가 포함된 위치로 DLL 검색 경로가 리디렉션됩니다.

장점

SetDllDirectory 함수를 사용하면 사용자의 컴퓨터나 설치 경로에 의존하지 않고 DLL의 런타임 위치를 동적으로 지정할 수 있습니다.

위 내용은 동적 DLL 경로를 C#의 DllImport와 함께 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿