我正在尝试从 openCV 2.4.5 到 Visual Studio 2010(基于 VC++)的示例代码 bagofwords_classification.cpp。但我发现了错误代码:
error C2664: 'CreateDirectoryW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR'
你能帮我解决这个问题吗?谢谢。 :)
更新v1:
static void makeDir( const string& dir )
{
#if defined WIN32 || defined _WIN32
CreateDirectory( dir.c_str(), 0 );
#else
mkdir( dir.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH );
#endif
}
static void makeUsedDirs( const string& rootPath )
{
makeDir(rootPath + bowImageDescriptorsDir);
makeDir(rootPath + svmsDir);
makeDir(rootPath + plotsDir);
}
你有调用的代码CreateDirectory
. When UNICODE
被定义,该符号实际上是一个宏CreateDirectoryW
;目的是让您在使用时使用“不明确”的函数名称TCHAR
代替char
or wchar_t
,因此您可以在编译 Unicode 或 Ansi 程序之间切换。
然而,std::string
不改变根据UNICODE
; it's always安西,所以它c_str
方法总是返回一个char*
, never wchar_t*
。当您有一个始终为 Ansi 的参数时,您也应该显式调用始终为 Ansi 的函数。在这种情况下,请致电CreateDirectoryA
.
您还可以考虑使用std::basic_string<TCHAR>
,但这可能正朝着您不希望的方向发展。
一个快速解决方法是调整您的项目设置,以便UNICODE
不再定义。请查阅工具集的文档以了解如何执行此操作,或探索 IDE 的项目选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)