可能重复:
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