내가 관리되지 않는 DLL이있다. 클리어런스에 대해서는 C# 코드에서 사용하려는 C++ DLL입니다. 문제는 자사의 윈도우 응용 프로그램과 사용자가 자신이 선택한 임의의 디렉토리에 설치 할 수 있다는 것입니다. 그래서 정적 경로로 참조 할 수 없으며 상대 경로를 제공하는 방법을 찾을 수 없습니다. 여기에 내가 노력 코드입니다 :
[DllImport("mydll.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool SetDllDirectory(string lpPathName);
public void SetDllDirectory(string lpPathName)
{
try
{
bool r = SetDllDirectory(lpPathName);
}
catch (Exception ex)
{
throw ex;
}
}
public void SetDirectoryPath()
{
try
{
DirectoryInfo directory = new DirectoryInfo(System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath));
if (directory.Exists)
SetDllDirectory(directory.ToString() + "\\mydll.dll");
}
catch (Exception ex)
{
throw ex;
}
}
는 그리고 아래 나는 수신하고있는 오류입니다.
'mydll.dll'DLL에서 'SetDllDirectory'라는 항목 포인트를 찾을 수 없습니다.
이 질문은
그 죄송합니다 "Relative Path to DLL in Platform Invoke Statement"
의 복제 될 수 있지만 이러한 참조 어떤 해결책을 찾지 못했습니다.
예, 그 방법을 시도했습니다. 그러나 그것은 효과가 없었습니다. 그 죄송합니다. –
PATH 해킹 또는 SetDllDirectory()를 시도 했습니까? – IanNorton
난 SetDllDirectory()를 시도했다 –