使用libuiohook

时间:2015-05-23 19:34:50

标签: c# .net pinvoke dllimport

我正在尝试使用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()或阻止=。 签名有什么问题?

1 个答案:

答案 0 :(得分:0)

问题可能在于我编译库的方式。 使用预编译文件仅在调用hook_run()之前注册回调时才有效。