私はアンマネージド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"
のレプリカかもしれないが、私はこれらの文献のいずれかの解決策を見つけることができませんでした。
はい、私はその方法を試しました。しかし、それは動作しませんでした。そのために残念。 –
PATHハックまたはSetDllDirectory()を試しましたか? – IanNorton
私はSetDllDirectory()を試しました –