zoukankan      html  css  js  c++  java
  • VC链接hid.lib出错问题解决方案

    写一个HID的客户端小程序,调用了一些HID API,但是链接时出现了奇怪的现象。

    尽管我已经把头文件和lib文件加入到了VC的Include和Lib目录中,但不管我用VC链接,还是在DDK环境下链接,都会提示如下的错误

    1>E:WINDDK3790.1830libwneti386BufferOverflowU.lib
    1>E:WINDDK3790.1830libcrti386libc.lib
    1>E:WINDDK3790.1830libwneti386advapi32.lib
    1>E:WINDDK3790.1830libwneti386kernel32.lib
    1>E:WINDDK3790.1830libwneti386hid.lib
    1>E:WINDDK3790.1830libwneti386setupapi.lib
    1>E:WINDDK3790.1830libwneti386comdlg32.lib
    1>hidtest.obj : error LNK2019: unresolved external symbol "void __stdcall HidD_GetHidGuid(struct _GUID *)" (?HidD_GetHidGuid@@YGXPAU_GUID@@@Z) referenced in function _main
    1>objchk_wnet_x86i386HidTest.exe : fatal error LNK1120: 1 unresolved externals

    明明已经找到了hid.lib,却还是提示找不到函数,这让我很纳闷,找了好久,终于在网上找到了答案:

    https://bbs.csdn.net/topics/350115980

    问题出在头文件的包含方式上,默认我是这么写的:

    #include <windows.h>
    #include <setupapi.h>
    #include <hidsdi.h>

    而实际上得这么写:

    #include <windows.h>
    #include <setupapi.h>

    extern "C" {
    #include <hidsdi.h>
    };

    我猜测是因为这个头文件定义的符号名称是C方式的,如果是按CPP方式的话,可能是因为名称修饰的关系导致找不到对应的函数吧

    修改完成后再编译就通过啦!

  • 相关阅读:
    2021找工作总结
    HashMap源码(JDK1.8)-手动注释
    HashMap底层源码分析-手动注释
    面试常问的ArrayQueue底层实现
    SVN使用方法
    async await Task 使用方法
    视觉设备说明
    Java8--lambda表达式与函数式编程
    重磅!微软发布 vscode.dev,把 VS Code 带入浏览器!
    解决Vite-React项目中js使用jsx语法报错的问题
  • 原文地址:https://www.cnblogs.com/achillis/p/8619753.html
Copyright © 2011-2022 走看看