VC++ | VS2017编译报错-20230428

news2024/11/26 22:47:01

VC++ | VS2017编译报错-20230428

文章目录

  • VC++ | VS2017编译报错-20230428
    • 1.报错
      • 1-1.解决办法
    • 2.报错
      • 2-1.解决办法
        • 2-1-1.做如下设置
        • 2-1-2.代码调整

1.报错

1>------ 已启动生成: 项目: NvtUSBTool, 配置: Debug Win32 ------
1>NvtUSBTool.cpp
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(29): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [26]”转换为“LPCSTR”
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(29): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(30): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [30]”转换为“LPCSTR”
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(30): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(31): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [22]”转换为“LPCSTR”
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(31): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(32): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [24]”转换为“LPCSTR”
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(32): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(33): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [24]”转换为“LPCSTR”
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(33): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(34): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [18]”转换为“LPCSTR”
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(34): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(35): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [17]”转换为“LPCSTR”
1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(35): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
1>已完成生成项目“NvtUSBTool.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0==========
1>------ 已启动生成: 项目: NvtUSBTool, 配置: Debug Win32 ------
1>NvtUSBTool.cpp
nvtusbtool.cpp(29): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [26]”转换为“LPCSTR”
nvtusbtool.cpp(29): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
nvtusbtool.cpp(30): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [30]”转换为“LPCSTR”
nvtusbtool.cpp(30): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
nvtusbtool.cpp(31): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [22]”转换为“LPCSTR”
nvtusbtool.cpp(31): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
nvtusbtool.cpp(32): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [24]”转换为“LPCSTR”
nvtusbtool.cpp(32): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
nvtusbtool.cpp(33): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [24]”转换为“LPCSTR”
nvtusbtool.cpp(33): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
nvtusbtool.cpp(34): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [18]”转换为“LPCSTR”
nvtusbtool.cpp(34): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
nvtusbtool.cpp(35): error C2664: “FARPROC GetProcAddress(HMODULE,LPCSTR)”: 无法将参数 2 从“const wchar_t [17]”转换为“LPCSTR”
nvtusbtool.cpp(35): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换
1>已完成生成项目“NvtUSBTool.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0==========

获取DLL中函数的地址:
FARPROC GetProcAddress( HMODULE hModule, LPCSTR lpProcName);
hModule:动态链接库模块的句柄;
LPCSTR :一个指向常量的字符指针,指定DLL导出函数的名字或函数的序号;

1-1.解决办法

#define X_API_LOAD(lib,fn) fn = (I##fn)GetProcAddress(lib,TEXT(#fn))

修改如下:
#define X_API_LOAD(lib,fn) fn = (I##fn)GetProcAddress(lib,(LPCSTR)TEXT(#fn))

2.报错

编译OK后,运行报错:
0x00000000 处(位于 NvtUSBTool.exe 中)引发的异常: 0xC0000005: 执行位置 0x00000000 时发生访问冲突。 出现了

2-1.解决办法

2-1-1.做如下设置

属性-》配置属性-》常规-》字符集:将使用Unicode字符集修改为使用多字节字符集

在这里插入图片描述

编译时报错;
1>------ 已启动生成: 项目: NvtUSBTool, 配置: Release Win32 ------ 1>NvtUSBTool.cpp 1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(19): error C2664: “HMODULE LoadLibraryA(LPCSTR)”: 无法将参数 1 从“const wchar_t [10]”转换为“LPCSTR” 1>$(PRJ_ROOT_DIR)nvtusbtool\nvtusbtool.cpp(19): note: 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换 1>已完成生成项目“NvtUSBTool.vcxproj”的操作 - 失败。 ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

2-1-2.代码调整

原代码

BOOL NvUSB_Init(void)
{
	hLibNvUSB = LoadLibrary(L"NvUSB.dll");
	if (!hLibNvUSB) {
		printf("Cannot find NvUSB.all\n");
		return false;
	}

	X_API_LOAD(hLibNvUSB, NvUSB_EnumAvailableDevice);
	X_API_LOAD(hLibNvUSB, NvUSB_GetFirstAvailableDevice);
	X_API_LOAD(hLibNvUSB, NvUSB_ConnectToDevice);
	X_API_LOAD(hLibNvUSB, NvUSB_VenderCmd_GetData);
	X_API_LOAD(hLibNvUSB, NvUSB_VenderCmd_SetData);
	X_API_LOAD(hLibNvUSB, NvUSB_MemoryWrite);
	X_API_LOAD(hLibNvUSB, NvUSB_MemoryRead);

	return true;
}

修改如下:
hLibNvUSB = LoadLibrary("NvUSB.dll");
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/475267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux文件系统权限

目录标题 文件权限文件和目录的一般权限文件的权限针对三类对象进行定义文件和目录中,r、w、x的作用 设置文件和目录的一般权限修改文件或目录的权限—chmod(change mode)命令权限值的表示方法—使用3位八进制数表示权限值的表示方法—使用字符串表示修改文件或目录…

视频转gif如何做?三步教你视频转gif制作

如何将视频做成gif表情包呢?想要把视频中的精彩画面截取出来做成gif动画表情,却又不想下载软件的时候,该怎么办呢?有没有简单实用的工具呢? 一、什么工具能够截取视频做gif呢? GIF中文网作为一款专业的在…

react之按钮鉴权

使用HOC来完成 HOC:高阶组件,是React中复用组件逻辑的一种高级技巧。HOC自身不是React API的一部分,他是一种基于React的组合特性而形成的设计模式。 作用:用于复用组件的业务逻辑 VUE mixinReact Hoc 用户数据渲染带操作按钮渲…

C#手术麻醉临床信息系统源码,实现体征数据自动采集绘制

手麻系统源码,自动生成电子单据 基于C# 前端框架:Winform后端框架:WCF 数据库:sqlserver 开发的手术麻醉临床信息系统源码,应用于医院手术室、麻醉科室的计算机软件系统。该系统针对整个围术期,对病人进…

本地安装kibana kibana设置中文汉化

一、Kibana简介 Kibana是一个开源的基于浏览器的分析和可视化平台,可以用于搜索,查看,删除Elasticsearch索引并与存储在Elasticsearch索引中的数据进行交互。可以执行高级数据分析,并且以各种图标、表格和地图的形式可视化数据。…

【hello Linux】进程信号

目录 1. 进程信号的引出及整体概况 2. 信号的产生 1. 键盘产生 2. 进程异常 3. 系统调用 4. 软件条件 3. 信号的保存 1. 信号相关的常见概念 2. sigset_t 3. 信号集操作函数 4. sigprocmask:对block位图的操作 5. sigpending:对pending位图的操作 6. 捕捉…

三分钟看懂Python分支循环规范:if elif for while

人生苦短,我用python 分支与循环 条件是分支与循环中最为核心的点, 解决的问题场景是不同的问题有不同的处理逻辑。 当满足单个或者多个条件或者不满足条件进入分支和循环, 这里也就说明这个对相同问题处理执行逻辑依据具体参数动态变化&…

智慧医疗服务平台有哪些优势?

对于引用了智慧医疗服务平台的机构来说,其优势体现在哪些方面呢? 一、提高医疗资源利用效率。 在传统的医疗模式中,医生需要耗费大量的时间和精力去处理病人的病历、诊断、治疗等问题。而在智慧医疗服务平台的支持下&#xff0…

稳定排序和不稳定排序

稳定排序和不稳定排序 稳定排序 插入排序、冒泡排序、归并排序、基数排序 其时间复杂度 直接插入排序 最好情况:初始有序,为O(n); 最坏情况:初始逆序,为O(n) 平均时间复杂度T(n) O(n) 折半插入排序 时间复杂度为O(n) 冒泡排序 最好时,基本有序,…

Python 科研绘图可视化(后处理)Matplotlib - 2D彩图

Introduction 科研可视化是将数据和信息转化为可视化形式的过程,旨在通过图形化展示数据和信息,使得科研工作者能够更好地理解和分析数据,并从中发现新的知识和洞见。科研可视化可以应用于各种领域,如生物学、物理学、计算机科学…

制造策略 ETO、MTO、ATO、MTS

ETO 按交货周期跨度从长到短来讲,首先就是 ETO,Engineer To Order – 面向订单设计、定制生产或特殊生产。 就是客户给的订单,你要生产的话,你之前的原产品改动很大,或者基本上用不上,要完全按照客户的要求…

虚机制

一、虚机制的引入 利用动态编联实现——虚函数来解决上述问题 二、虚函数 必须是实例方法,不能是类方法。 若基类中析构函数为虚函数,则派生类中的析构函数不论写不写virtual关键字都是虚函数。派生类中新的虚函数应尽量避免与基类中的虚函数重名。 三、…

java基础知识——24.泛型

这篇文章我们来讲一下java的泛型 目录 1.什么是泛型 1.1 泛型的概念 1.2 泛型的好处 1.3 粗看泛型集合的源码 2.泛型类 2.1 泛型类的定义 2.2 从泛型类派生子类 3.泛型接口 4.泛型方法 5.类型通配符 5.1类型通配符上限 5.2 类型通配符的下限 6.类型擦除 6.1无限…

HTML(三) -- 表单设计

目录 1. 基本语法 2. 表单控件 2.1 input控件 input 常用属性: input type的表单项: 2.2 select 控件 2.3 textarea控件 2.4 label 控件 为什么需要表单? 在我们网页中, 无论是提交搜索的信息,还是网上注…

线程池核心线程是如何保持住的?

概述 本文尝试回答以下几个问题: 1、核心线程池是如何保持住的? 2、当没有任务时,超过核心线程数的线程是如何回收的? 3、线程队列为什么必须是BlockingQueue,普通队列行不行? 背景知识 以下是一些背景知…

第十三章 移动和旋转(上)

移动和旋转是游戏对象最频繁地操作。我们上个章节简单介绍了Cube的移动和旋转。移动是修改transform的position属性,旋转是修改transform的eulerAngles(欧拉角)属性,两者属性值均可以使用Vector3向量来实现。需要大家注意的是&…

C#窗体将DGV控件中数据导入导出Excel表

目录 界面图: 效果视频: 一:将DGV数据导出到Excel表中 二:将Excel表数据导入到DGV中 三:界面全部代码 界面图: 效果视频: DGV数据导入导出Excel 一:将DGV数据导出到Excel表中 p…

私人影院 - 本地搭建Emby媒体库服务器并在外远程访问 「无需公网IP」

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中,观看视频绝对是主力应用场景之一&…

用ChatGPT问DotNet的相关问题,发现DotNet工程师的前景还不错

本人最近费了九牛二虎之力注册了一个ChatGPT账号,现在就给大家分享一下,问一下关于.NET的问题,看看ChatGPT的AI功能具体如何? 一、C#跟其它语言比较的优势 回答: C#是一门编程语言,它是为 Microsoft 的 …

【Linux】动态库与静态库

目录 一、前言 二、静态库与动态库 三、生成静态库 1、生成原理 2、完整过程 3、总结 四、生成动态库 1、环境变量 2、建立软链接 3、配置文件 五、动态库的加载 1、动态库加载的过程 2、动态库地址的理解 3、补充内容 一、前言 关于动态库与静态库的一小部分前置…