pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

無法將“const char*"轉換為“LPCWSTR {aka const w

cannot convert #39;const char*#39; to #39;LPCWSTR {aka const wchar_t*}#39;(無法將“const char*轉換為“LPCWSTR {aka const wchar_t*})
本文介紹了無法將“const char*"轉換為“LPCWSTR {aka const wchar_t*}"的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我在我的 C++ 代碼中遇到一個我無法理解的錯誤.精簡后的代碼位在這里:

I'm getting an error in my C++ code that I can't quite make sense of. The stripped down code bits are here:

RS232Handle=OpenRS232("COM1", 9600);

HANDLE OpenRS232(const char* ComName, DWORD BaudRate)
{
    ComHandle=CreateFile(ComName, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
}

我收到以下錯誤:

error: cannot convert 'const char*' to 'LPCWSTR {aka const wchar_t*}' for argument '1' to 'void* CreateFileW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE)'
     ComHandle=CreateFile(ComName, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

代碼取自 VS 代碼,我現在使用 Qt creator.

The code was taken from VS code and I am now using Qt creator.

我該如何解決這個問題?謝謝!

How can I fix this issue? Thanks!

推薦答案

Windows CreateFile 函數實際上是一個擴展為以下之一的宏:

The Windows CreateFile function is actually a macro that expands to one of:

  • CreateFileA,它采用 const char*
  • 類型的文件路徑
  • CreateFileW,它采用 const wchar_t* 類型的文件路徑.
  • CreateFileA, which takes a file path of type const char*
  • CreateFileW, which takes a file path of type const wchar_t*.

(Windows API 中大多數采用字符串的函數也是如此.)

(The same is true for most of the functions in the Windows API that take a string.)

您聲明了參數 const char* ComName,但顯然編譯時定義了 UNICODE,因此它調用了 W 版本的功能.沒有從 const wchar_t*const char* 的自動轉換,因此出現錯誤.

You're declaring the parameter const char* ComName, but apparently compiling with UNICODE defined, so it's calling the W version of the function. There's no automatic conversion from const wchar_t* to const char*, hence the error.

您的選擇是:

  1. 將函數參數更改為 UTF-16 (const wchar_t*) 字符串.
  2. 保留 char* 參數,但讓您的函數使用 MultiByteToWideChar.
  3. 顯式調用 CreateFileA 而不是 CreateFile.
  4. 在不使用 UNICODE 的情況下編譯您的程序,以便宏默認擴展為 A 版本.
  5. 綁架一位著名的 Microsoft 開發人員并強迫他閱讀UTF-8 Everywhere,直到他同意讓 Windows 完全支持 UTF-8 作為ANSI"代碼頁,從而使各地的 Windows 開發人員擺脫這種寬字符的束縛.
  1. Change the function parameter to a UTF-16 (const wchar_t*) string.
  2. Keep the char* parameter, but have your function explicitly convert it to a UTF-16 string with a function like MultiByteToWideChar.
  3. Explicitly call CreateFileA instead of CreateFile.
  4. Compile your program without UNICODE, so that the macros expand to the A versions by default.
  5. Kidnap a prominent Microsoft developer and force him to read UTF-8 Everywhere until he agrees to have Windows fully support UTF-8 as an "ANSI" code page, thus freeing Windows developers everywhere from this wide-character stuff.

我不知道是否涉及綁架,但 Windows 10 1903 終于添加了支持 對于 UTF-8 作為 ANSI 代碼頁.

I don't know if a kidnapping was involved, but Windows 10 1903 finally added support for UTF-8 as an ANSI code page.

這篇關于無法將“const char*"轉換為“LPCWSTR {aka const wchar_t*}"的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How can I read and manipulate CSV file data in C++?(如何在 C++ 中讀取和操作 CSV 文件數據?)
In C++ why can#39;t I write a for() loop like this: for( int i = 1, double i2 = 0; (在 C++ 中,為什么我不能像這樣編寫 for() 循環: for( int i = 1, double i2 = 0;)
How does OpenMP handle nested loops?(OpenMP 如何處理嵌套循環?)
Reusing thread in loop c++(在循環 C++ 中重用線程)
Precise thread sleep needed. Max 1ms error(需要精確的線程睡眠.最大 1ms 誤差)
Is there ever a need for a quot;do {...} while ( )quot; loop?(是否需要“do {...} while ()?環形?)
主站蜘蛛池模板: 周口风机|周风风机|河南省周口通用风机厂 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 蚂蚁分类信息系统 - PHP同城分类信息系统 - MayiCMS | 建筑工程资质合作-工程资质加盟分公司-建筑资质加盟 | 模具钢_高速钢_不锈钢-万利钢金属材料| 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 | 滁州高低温冲击试验箱厂家_安徽高低温试验箱价格|安徽希尔伯特 | 桂林腻子粉_内墙外墙抗裂砂浆腻子粉推荐广西鑫达涂料厂家供应 | 柔软云母板-硬质-水位计云母片组件-首页-武汉长丰云母绝缘材料有限公司 | 锂电叉车,电动叉车_厂家-山东博峻智能科技有限公司 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | Boden齿轮油泵-ketai齿轮泵-yuken油研-无锡新立液压有限公司 | 北京普辉律师事务所官网_北京律师24小时免费咨询|法律咨询 | 步进电机_agv电机_伺服马达-伺服轮毂电机-和利时电机 | 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 气胀轴|气涨轴|安全夹头|安全卡盘|伺服纠偏系统厂家-天机传动 | 陕西高职单招-陕西高职分类考试网| 模具硅橡胶,人体硅胶,移印硅胶浆厂家-宏图硅胶科技 | 玖容气动液压设备有限公司-气液增压缸_压力机_增压机_铆接机_增压器 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 航空障碍灯_高中低光强航空障碍灯_民航许可认证航空警示灯厂家-东莞市天翔航天科技有限公司 | 无纺布包装机|径向缠绕包装机|缠绕膜打包机-上海晏陵智能设备有限公司 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 气动|电动调节阀|球阀|蝶阀-自力式调节阀-上海渠工阀门管道工程有限公司 | 筒瓦厂家-仿古瓦-寺庙-古建琉璃瓦-宜兴市古典园林建筑陶瓷厂有限公司 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 天津中都白癜风医院_天津白癜风医院_天津治疗白癜风 | 华中线缆有限公司-电缆厂|电缆厂家|电线电缆厂家 | 专业的新乡振动筛厂家-振动筛品质保障-环保振动筛价格—新乡市德科筛分机械有限公司 | 水厂自动化|污水处理中控系统|水利信息化|智慧水务|智慧农业-山东德艾自动化科技有限公司 | 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | 农业仪器网 - 中国自动化农业仪器信息交流平台 | 建筑资质代办-建筑企业资质代办机构-建筑资质代办公司 | 游泳池设备安装工程_恒温泳池设备_儿童游泳池设备厂家_游泳池水处理设备-东莞市君达泳池设备有限公司 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 |