我正在尝试使用P / Invoke在C#中为libuiohook编写一个包装器。
但我甚至无法使用简单的hook_run
签名。
我的代码:
static void Main(string[] args)
{
var result = Start();
Console.WriteLine(result);
Console.ReadLine();
Stop();
}
[DllImport("libuiohook", EntryPoint = "hook_stop",
CallingConvention = CallingConvention.Cdecl)] //StdCall gives the same problems
private static extern int Stop();
[DllImport("libuiohook", EntryPoint = "hook_run",
CallingConvention = CallingConvention.Cdecl)]
private static extern int Start();
原生界面是:(Full public interface)
// Insert the event hook.
UIOHOOK_API int hook_run();
// Withdraw the event hook.
UIOHOOK_API int hook_stop();
它不断向System.AccessViolationException
投掷Start()
或阻止=
。
签名有什么问题?
答案 0 :(得分:0)
问题可能在于我编译库的方式。
使用预编译文件仅在调用hook_run()
之前注册回调时才有效。