C#git2.dll
で使用する代わりに、実際の のロード/アンロードを手動で処理する必要があります。に格納されているメソッドのアドレスへの参照用の[DllImport("git2")]
作成に問題があるようです。IntPtr
libgit2
PluginManager
これは、ライブラリの手動ロード、マーシャリング/デリゲート (このキンクを修正したときはいつでも)、およびアンロードを容易にするのに役立つと思われる、私のクラスの良い部分です。
public class PluginManager {
public const string LIB = "Assets\\Plugins\\git2.dll";
[DllImport( "kernel32.dll", CharSet = CharSet.Ansi )]
public static extern IntPtr LoadLibrary( [In, MarshalAs( UnmanagedType.LPStr )] string lib );
[DllImport( "kernel32.dll", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true )]
public static extern IntPtr GetProcAddress( [In] IntPtr reference, [In, MarshalAs( UnmanagedType.LPStr )] string method );
[DllImport( "kernel32.dll" )]
public static extern bool FreeLibrary( [In] IntPtr reference );
}
ここで私はそれらを使用しようとしています:
//# Working; always non-zero.
IntPtr reference = PluginManager.LoadLibrary( PluginManager.LIB );
//# Should be valid -- LibGit2Sharp.Core.NativeMethods.cs calls this method, too.
//# Always returns IntPtr.Zero.
IntPtr methodReference = PluginManager.GetProcAddress( reference, "git_repository_open" );
ライブラリはこのタイプの読み込みにさらされていませんか? LibGit2Sharp
ネイティブ フックに存在するすべての種類のメソッドを試しましたが、常にゼロが返されます。