繁体   English   中英

'未解析的外部符号'

[英]'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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM