解决使用枚举串口类而造成无法无法解析的外部符号的问题

 

         最近在开发一个串口通信程序,使用的是Zach Gorman提供的类。不过在vs2005下,会出现如下的情况:
1>------ 已启动生成: 项目: Communication, 配置: Debug Win32 ------
1>正在编译...
1>EnumSerial.cpp
1>正在链接...
1>EnumSerial.obj : error LNK2019: 无法解析的外部符号 __imp__SetupDiDestroyDeviceInfoList@4,该符号在函数 __catch$?EnumPortsWdm@@YAXAAV?$CArray@USSerInfo@@AAU1@@@@Z$0 中被引用
1>EnumSerial.obj : error LNK2019: 无法解析的外部符号 __imp__SetupDiGetDeviceRegistryPropertyW@28,该符号在函数 "void __cdecl EnumPortsWdm(class CArray &)" (?EnumPortsWdm@@YAXAAV?$CArray@USSerInfo@@AAU1@@@@Z) 中被引用
1>EnumSerial.obj : error LNK2019: 无法解析的外部符号 __imp__SetupDiGetDeviceInterfaceDetailW@24,该符号在函数 "void __cdecl EnumPortsWdm(class CArray &)" (?EnumPortsWdm@@YAXAAV?$CArray@USSerInfo@@AAU1@@@@Z) 中被引用
1>EnumSerial.obj : error LNK2019: 无法解析的外部符号 __imp__SetupDiEnumDeviceInterfaces@20,该符号在函数 "void __cdecl EnumPortsWdm(class CArray &)" (?EnumPortsWdm@@YAXAAV?$CArray@USSerInfo@@AAU1@@@@Z) 中被引用
1>EnumSerial.obj : error LNK2019: 无法解析的外部符号 __imp__SetupDiGetClassDevsW@16,该符号在函数 "void __cdecl EnumPortsWdm(class CArray &)" (?EnumPortsWdm@@YAXAAV?$CArray@USSerInfo@@AAU1@@@@Z) 中被引用
1>C:\Documents and Settings\Administrator\桌面\DEV\ModBus通信协议demo -09-20\Debug\Communication.exe : fatal error LNK1120: 5 个无法解析的外部命令
1>生成日志保存在“file://c:\Documents and Settings\Administrator\桌面\DEV\ModBus通信协议demo -09-20\Communication\Debug\BuildLog.htm”
1>Communication - 6 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========

     这是因为VS2005中没有给我们导入setupapi.dll文件,有两种解决办法:
     1:在你的.h文件中的开始位置插入#pragma comment(lib,"setupapi")即可
      2:或者按下图设置

你可能感兴趣的:(C++)