VC6环境下USB编程链接错误解决办法

简介: VC6环境下USB编程链接错误解决办法 背景介绍: 编程环境:Visual C++ 6.0 + SP6 操作系统:Windows XP Service Pack 3 提出问题: 在MFC应用程序中引用经典的USBView源码过程中,出现如下错误: usb.

VC6环境下USB编程链接错误解决办法

背景介绍:

编程环境:Visual C++ 6.0 + SP6

操作系统:Windows XP Service Pack 3

提出问题:

MFC应用程序中引用经典的USBView源码过程中,出现如下错误:

usb.obj : error LNK2001: unresolved external symbol "unsigned long __stdcall CM_Get_Parent(unsigned long *,unsigned long,unsigned long)" (?CM_Get_Parent@@YGKPAKKK@Z)

usb.obj : error LNK2001: unresolved external symbol "unsigned long __stdcall CM_Get_Sibling(unsigned long *,unsigned long,unsigned long)" (?CM_Get_Sibling@@YGKPAKKK@Z)

usb.obj : error LNK2001: unresolved external symbol "unsigned long __stdcall CM_Get_Child(unsigned long *,unsigned long,unsigned long)" (?CM_Get_Child@@YGKPAKKK@Z)

usb.obj : error LNK2001: unresolved external symbol "unsigned long __stdcall CM_Get_DevNode_Registry_PropertyA(unsigned long,unsigned long,unsigned long *,void *,unsigned long *,unsigned long)" (?CM_Get_DevNode_Registry_PropertyA@@YGKKKPAKPAX0K@

Z)

usb.obj : error LNK2001: unresolved external symbol "unsigned long __stdcall CM_Locate_DevNodeA(unsigned long *,char *,unsigned long)" (?CM_Locate_DevNodeA@@YGKPAKPADK@Z)

../bin/Debug/ATSync.exe : fatal error LNK1120: 5 unresolved externals

分析问题:

CM_Locate_DevNode

CM_Get_DevNode_Registry_Property

CM_Get_Sibling

CM_Get_Child

CM_Get_Parent

这些函数都来自于同一个cfgmgr32.lib静态链接库中,

cfgmgr32.lib库应该是使用C语言进行编译的,所以在使用C++进行编程时,在引用cfgmgr32.h头文件时不能简单地使用include,即#include "cfgmgr32.h",而需要加入extern “C”的声明。

解决问题

#ifdef __cplusplus

extern "C"{

#include "cfgmgr32.h"

}

#endif

相关文章
|
8月前
|
人工智能 物联网 Linux
手把手之如何在嵌入式Linux上运行QT应用程序(以百问网imx6ull开发板为例)
手把手之如何在嵌入式Linux上运行QT应用程序(以百问网imx6ull开发板为例)
751 0
|
12月前
|
Ubuntu 编译器 Linux
Linux驱动开发笔记(三):基于ubuntu的helloworld驱动源码编写、makefile编写以及驱动编译加载流程测试
前面学习了驱动的基础框架,上一篇编译了gcc7.3.0,那么为了方便很好的熟悉流程,本篇,将使用ubuntu18.04,直接编译ubuntu18.04的驱动,然后做好本篇文章的相关实战测试。
|
Linux
LINUX上开发ffmpeg程序,查看链接的库
LINUX上开发ffmpeg程序,查看链接的库
175 0
|
安全
[经验]使用Keil MDK+Jlink-OB下载失败的解决办法
[经验]使用Keil MDK+Jlink-OB下载失败的解决办法
456 0
[经验]使用Keil MDK+Jlink-OB下载失败的解决办法
stm32实用技巧:JLINK接口定义和使用JTAG或SW下载程序
stm32实用技巧:JLINK接口定义和使用JTAG或SW下载程序
stm32实用技巧:JLINK接口定义和使用JTAG或SW下载程序
|
IDE 开发工具
关于 通过jlink使用jtag(或swd)下载程序成功后,keil4 uversion停止运行 的解决方法
关于 通过jlink使用jtag(或swd)下载程序成功后,keil4 uversion停止运行 的解决方法
关于 通过jlink使用jtag(或swd)下载程序成功后,keil4 uversion停止运行 的解决方法
Win知识 - 程序是怎样跑起来的——Win编译和链接机制
Win知识 - 程序是怎样跑起来的——Win编译和链接机制
72 0
Win知识 - 程序是怎样跑起来的——Win编译和链接机制
|
NoSQL 开发工具 Android开发
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(三)
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(三)
271 0
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(三)
|
Go 开发工具 Android开发
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(二)
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(二)
155 0
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(二)
|
Ubuntu Linux 编译器
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(一)
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(一)
249 0
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(一)