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

时间:2018-04-15 23:30:53

标签: 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?

1 个答案:

答案 0 :(得分:0)

问题在于VS2017变量

  

%(PreprocessorDefinitions)

预处理程序定义中缺少

。现在,定义器 / D _UNICODE / D UNICODE 被正确添加到编译器参数列表中。

The missing the %(PreprocessorDefinitions)