adb工具编译错误解决。

一。编译AdbWinApi:

    (a) error C2664: 'CreateFileA' : cannot convert parameter 1 from 'const unsigned short *' to 'const char *' 

         解决办法:将项目的字符集设置成unicode:

-------------------------------------------------------------------------------------------------------------------------------------------------------

.

      (b).>d:\work\project\adb_dev\api\adb_api_instance.h(103): error C2146: 语法错误: 缺少“;”(在标识符“instance_handle_”的前面)
     1>d:\work\project\adb_dev\api\adb_api_instance.h(103): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
     1>d:\work\project\adb_dev\api\adb_api_instance.h(110): error C2065: “ADBAPIINSTANCEHANDLE”: 未声明的标识符
     1>d:\work\project\adb_dev\api\adb_api_instance.h(110): error C2923: “std::map”: 对于参数“_Kty”,“ADBAPIINSTANCEHANDLE”不是有效的 模板 类型变量
     1>d:\work\project\adb_dev\api\adb_api_instance.cpp(39): error C2065: “instance_handle_”: 未声明的标识符
    1>d:\work\project\adb_dev\api\adb_api_instance.cpp(40): error C2061: 语法错误: 标识符“ADBAPIINSTANCEHANDLE”

     解决办法:在文件中添加typedef void* ADBAPIINSTANCEHANDLE;

----------------------------------------------------------------------------------------------------------------------------------------------------------------

adb_helper_routines.obj : error LNK2019: 无法解析的外部符号 __imp__SetupDiDestroyDeviceInfoList@4,该符号在函数 "bool __cdecl EnumerateDeviceInterfaces(struct _GUID,unsigned long,bool,bool,class std::vector<class AdbInstanceEnumEntry,class std::allocator<class AdbInstanceEnumEntry> > *)" (?EnumerateDeviceInterfaces@@YA_NU_GUID@@K_N1PAV?$vector@VAdbInstanceEnumEntry@@V?$allocator@VAdbInstanceEnumEntry@@@std@@@std@@@Z) 中被引用
1>adb_helper_routines.obj : error LNK2019: 无法解析的外部符号 __imp__SetupDiEnumDeviceInterfaces@20,该符号在函数 "bool __cdecl EnumerateDeviceInterfaces(void *,struct _GUID,bool,bool,class std::vector<class AdbInstanceEnumEntry,class std::allocator<class AdbInstanceEnumEntry> > *)" (?EnumerateDeviceInterfaces@@YA_NPAXU_GUID@@_N2PAV?$vector@VAdbInstanceEnumEntry@@V?$allocator@VAdbInstanceEnumEntry@@@std@@@std@@@Z) 中被引用
1>adb_helper_routines.obj : error LNK2019: 无法解析的外部符号 __imp__SetupDiGetDeviceInterfaceDetailW@24,该符号在函数 "bool __cdecl GetUsbDeviceDetails(void *,struct _SP_DEVICE_INTERFACE_DATA *,struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W * *)" (?GetUsbDeviceDetails@@YA_NPAXPAU_SP_DEVICE_INTERFACE_DATA@@PAPAU_SP_DEVICE_INTERFACE_DETAIL_DATA_W@@@Z) 中被引用
1>adb_helper_routines.obj : error LNK2019: 无法解析的外部符号 __imp__SetupDiGetClassDevsW@16,该符号在函数 "bool __cdecl EnumerateDeviceInterfaces(struct _GUID,unsigned long,bool,bool,class std::vector<class AdbInstanceEnumEntry,class std::allocator<class AdbInstanceEnumEntry> > *)" (?EnumerateDeviceInterfaces@@YA_NU_GUID@@K_N1PAV?$vector@VAdbInstanceEnumEntry@@V?$allocator@VAdbInstanceEnumEntry@@@std@@@std@@

   解决办法:在依赖项中添加setupapi.lib

 

 二.AdbWinUsbApi编译出错:

    (a)

    1>d:\work\project\adb_dev\winusb\adb_winusb_interface.h(170): error C2146: 语法错误: 缺少“;”(在标识符“winusb_handle”的前面)
    1>d:\work\project\adb_dev\winusb\adb_winusb_interface.h(170): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

     解决办法:

         stdafx.h的修改:

               将win的版本号改成0x602

                #ifndef _WIN32_WINNT  // Allow use of features specific to Windows NT 4 or later.
                //#define _WIN32_WINNT 0x0500 // Change this to the appropriate value to target Windows 2000 or later.
                #define _WIN32_WINNT 0x0602
               #endif

               #ifndef _WIN32_WINDOWS  // Allow use of features specific to Windows 98 or later.
               //#define _WIN32_WINDOWS 0x0500 // Change this to the appropriate value to target Windows Me or later.
               #define _WIN32_WINDOWS 0x0602
              #endif

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值