[英]'Unresolved external symbol'
我尝试调用SetWindowsHookEx
function 来安装挂钩。 一切正常,当我调用SetWindowsHookEx
时,我得到一个未解决的外部错误。 当我在没有SetWindowsHookEx
的情况下调用 DLL 中的函数时,一切正常(所以它不是链接/包含错误)。 我使用 DEF 文件导入我的 DLL。 我正在使用 Visual Studio 2022。
确切的错误: unresolved external symbol __imp_SetWindowsHookExW referenced in function main
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <TestLibrary.h>
int main()
{
printf("Loading library\n");
HMODULE libHandle = LoadLibraryA("TestLibrary");
if (libHandle == NULL) printf("***ERROR*** loading library\n");
printf("Getting address of hook procedure\n");
HOOKPROC procAddress = (HOOKPROC)GetProcAddress(libHandle, "KeyboardProc");
if (procAddress == NULL) printf("***ERROR*** getting address\n");
printf("Installing hook\n");
HHOOK hook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)procAddress, libHandle, 0);
if (hook == NULL) printf("ERROR installing hook\n");
}
SetWindowsHookEx是一个在 User32 dll 中实现的 WIN32 function。
由于您与它进行静态链接,因此您需要将导入添加到 lib 文件。 在您的包含部分下添加此内容:
#pragma comment( lib, "user32" )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.