c++ - VS2017 C++编译器错误C2664无法转换参数

标签 c++ string unicode compiler-errors c2664

使用VS2017,我使用Unicode字符集编译以下代码

STDMETHODIMP Load(LPCOLESTR lpwszFileName, const AM_MEDIA_TYPE *pmt) {
 TCHAR *szExtension = PathFindExtension(lpwszFileName);

我得到以下错误
error C2664: 'LPSTR PathFindExtensionA(LPCSTR)': cannot convert argument 1 from 'LPCOLESTR' to 'LPCSTR'

VS2008下的相同代码可以很好地编译。这似乎是问题所在,为什么编译器选择 PathFindExtenstion 的ANSI版本而不是unicode版本?

最佳答案

问题是VS2017变量

%(PreprocessorDefinitions)



在预处理器定义中丢失。现在,定义器/D _UNICODE和/D UNICODE已正确添加到编译器参数的列表中。

The missing the %(PreprocessorDefinitions)

关于c++ - VS2017 C++编译器错误C2664无法转换参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49847780/

相关文章:

c++ - 四元数的标准位置?

c++ - "acquire"和 "consume"内存顺序有何不同, "consume"何时更可取?

c++ - IIS-部署ASP.NET网站和数据库连接

java - 为什么String中的equals方法不使用hash?

java - 通过 JSON 从 Java 到 Javascript 的 Unicode 字符串

python - 运行应用程序时服务器上显示 unicode 错误 (django)

python - Python 3 中的 Unicode 字符串是否仍然依赖于 "narrow"/"wide"版本?

c++ - 诱导编译器避免/触发右值复制

java - 如果 == 比较 Java 中的引用,为什么它对这些字符串求值为真?

delphi - 如何将字符串中的\xA0(或非ASCII)字符替换为''?