C++求助[Error]cannot convert 'const wchar_t*' to 'LPCSTR aka const char*

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++求助[Error]cannot convert 'const wchar_t*' to 'LPCSTR aka const char*相关的知识,希望对你有一定的参考价值。

[Error] cannot convert 'const wchar_t*' to 'LPCSTR aka const char*' for argument '3' to 'void* CreateMutexA(LPSECURITY_ATTRIBUTES, WINBOOL, LPCSTR)'

通过查看LPCSTR的定义:
typedef _Null_terminated_ CONST CHAR *LPCSTR, *PCSTR;

可以知道LPCSTR代表了const char *类型,它是一个指向以'\0'结尾的8位(单字节)ANSI字符数组的常量指针,
而const wchar_t *类型是一个指向'\0'结尾的16位(双字节)Unicode字符数组的常量指针.
在VS2013编译器中直接输入的字符串常量(如“abc”)默认是以const char *的格式(即ANSI编码)储存的,因此会导致类型不匹配的编译错误。

解决的办法有两个:
第一个方法是右击“解决方案资源管理器”中的项目,“属性→配置属性→常规→项目默认值→字符集”,默认的选项是“使用多字节字符集”,将它改为“使用Unicode字符集”即可。
这样,输入的字符串会默认以const wchar_t *格式储存。
第二个方法是使用_T宏,它在“tchar.h”中定义,它能够自动识别当前编译器字符串的储存格式并做出相应转换,避免这种类型的编译错误。
具体使用方法为:将“abc”改为_T("abc")。
参考技术A 编译器使用的字符集还是多字节编码导致的。看稍下几行,使用宽字符的LoadStringW就没有错误提示,所以可以照猫画虎,使用CreateMutexW来创建互斥量。
另外,找一找编译器有没有相关设置,直接设置成使用Unicode编码,就不需要自己多写这个W了

解决调用caffe的c++程序运行时报错: ./netapp.bin: error while loading shared libraries: libcaffe.so.1.0.0: cannot

caffe安装好后lib没有配置到/usr/lib或/usr/local/lib中,需手动配置:

 export LD_LIBRARY_PATH=/path_to_your_caffe/build/lib/:$LD_LIBRARY_PATH

 https://github.com/CMU-Perceptual-Computing-Lab/openpose/issues/148

以上是关于C++求助[Error]cannot convert 'const wchar_t*' to 'LPCSTR aka const char*的主要内容,如果未能解决你的问题,请参考以下文章

解决调用caffe的c++程序运行时报错: ./netapp.bin: error while loading shared libraries: libcaffe.so.1.0.0: cannot

C++之error: cannot bind non-const lvalue reference of type ‘myString&’ to an rvalue of type ‘mySt

用C++编程有错误LINK : fatal error LNK1104: cannot open file "Debug/123.exe"如何解决?

c++调试LINK : fatal error LNK1104: cannot open file "Debug/a.exe" 执行 link.exe 时出错.

c++调试LINK : fatal error LNK1104: cannot open file "Debug/a.exe" 执行 link.exe 时出错.

c++求助:WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)