可能重複:
Specify the search path for DllImport in .NET非託管DLL的相對路徑
我有一個非託管的DLL。對於清除,它是一個我想在我的C#代碼中使用的C++ dll。 問題是,它的Windows應用程序和用戶可以安裝在他們選擇的任何目錄。所以我不能用靜態路徑來引用它,而且我也找不到一個給出相對路徑的方法。 這裏是我試過的代碼:
[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;
}
}
,下面將我收到錯誤。
無法在DLL'mydll.dll'中找到名爲'SetDllDirectory'的入口點。
這個問題可能是
「Relative Path to DLL in Platform Invoke Statement」
對不起,一個副本,但我沒有發現這些引用的任何解決方案。
是的,我試過這種方法。但它沒有奏效。對不起。 – 2012-02-13 07:31:17
你試過PATH hack或SetDllDirectory()? – IanNorton 2012-02-13 07:32:55
我試過SetDllDirectory() – 2012-02-13 07:33:55