gpt4 book ai didi

c++ - 'CreateDirectoryW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' in OpenCV 2. 4.5 和 VS 2010

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:31 26 4
gpt4 key购买 nike

我正在尝试从 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 的代码.当UNICODE已定义,该符号实际上是 CreateDirectoryW 的宏;这样做的目的是让您在同时使用 TCHAR 时使用“模棱两可”的函数名称。而不是 charwchar_t , 因此您可以在针对 Unicode 或 Ansi 程序进行编译之间切换。

然而,std::string不会根据 UNICODE 改变; 总是 Ansi,所以它是c_str方法总是返回 char* , 从不 wchar_t* .当您有一个始终为 Ansi 的参数时,您也应该显式调用始终为 Ansi 的函数。在这种情况下,请调用 CreateDirectoryA .

您也可以考虑使用 std::basic_string<TCHAR> ,但这可能正朝着您不想去的方向前进。

快速修复是调整您的项目设置,以便 UNICODE不再定义。请查阅您的工具集的文档以了解如何执行此操作,或探索您的 IDE 的项目选项。

关于c++ - 'CreateDirectoryW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' in OpenCV 2. 4.5 和 VS 2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555479/

26 4 0