Codeblock尝试windows消息钩取失败 You must select a host application to “run” a library fatal error C1010: unexpected end of file while looking for precompiled header directive

代码参考:

https://blog.csdn.net/qq_38204481/article/details/82934364

其中程序为notepad的钩取程序,想拿codeblock做实验的,但是不知道怎么生成DLL文件

如果直接在编译完的exe程序下新建DLL文件,运行调用时会出现

Codeblock尝试windows消息钩取失败
You must select a host application to “run” a library
fatal error C1010: unexpected end of file while looking for precompiled header directive

因为这个DLL文件是需要我们去编译生成的,不能直接拿来用

百度了一番,参考了其他博客

尝试在codeblock新建动态链接库,然后差不多是这个结构(没有KeyHook.c的时候)

Codeblock尝试windows消息钩取失败
You must select a host application to “run” a library
fatal error C1010: unexpected end of file while looking for precompiled header directive

复制DLL的编译代码进mian.cpp,运行时会报

解决参考:https://m.656463.com/wenda/nbxxzygzjyycxlyxk_608

需要在project里面修改build的目标

Codeblock尝试windows消息钩取失败
You must select a host application to “run” a library
fatal error C1010: unexpected end of file while looking for precompiled header directive

然后新建C文件,写入HookMain.cpp的代码,这下总没错了吧

可以运行,确实在目录下生成了DLL文件。但是貌似没有效果,记事本还是能输入内容。

进入process exploer查看,记事本没有调用HookKey.dll,说明没有成功插入线程里面

Codeblock尝试windows消息钩取失败
You must select a host application to “run” a library
fatal error C1010: unexpected end of file while looking for precompiled header directive

Codeblock尝试windows消息钩取失败
You must select a host application to “run” a library
fatal error C1010: unexpected end of file while looking for precompiled header directive

解决方法:出现问题的原因应该是codeblock中编译文件出现的问题,建议重新配置MinGW,或是换一个编译器,使用VC来编译试试

例如VC++,

Codeblock尝试windows消息钩取失败
You must select a host application to “run” a library
fatal error C1010: unexpected end of file while looking for precompiled header directive

生成文件编译,但是会报错

fatal error C1010: unexpected end of file while looking for precompiled header directive

这是个可以避免的错误,参考:https://wenda.so.com/q/1460717746722829来解决

运行生成DLL文件,这次能够正常钩取消息了