我克隆了OpenCV的官方github回购,并使用CMake生成VS解决方案。
cmake -G "Visual Studio 14 2015" -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0" .
如您所见,我想为UWP 32位构建OpenCV。在VS 2015中构建时,opencv_core模块失败并显示:
Error C2664 'BOOL CreateDirectoryA(LPCSTR,LPSECURITY_ATTRIBUTES)': cannot convert argument 1 from 'wchar_t [260]' to 'LPCSTR'
Error C2039 'CreateFileA': is not a member of '`global namespace''
Error C3861 'CreateFileA': identifier not found
Error C2664 'DWORD GetTempPathW(DWORD,LPWSTR)': cannot convert argument 2 from 'char [261]' to 'LPWSTR'
所有这些错误都在文件“filesystem.cpp中的opencv_core中。现在,我已经在几周前成功构建了它,之前我必须重新格式化我的电脑。现在它不会构建而我不会知道如何解决这些问题。这些问题可能与Windows 10 SDK有关吗?
答案 0 :(得分:0)
您似乎在混合UNICODE
和非UNICODE
版本。确保它们一致并且您使用正确类型的字符串(如果您愿意,请使用TEXT()
宏)。
要验证,请右键单击VS中的项目,然后选择属性,然后展开 C / C ++ - > 预处理器并检查预处理器定义。点击该值旁边的向下箭头,然后点击< edit> ,然后验证是否已定义UNICODE
和_UNICODE
。如果没有,请添加它们。您需要为每个配置重复此操作(您可以尝试选择"所有"但如果您有相互冲突的选项,这可能会搞砸了。)
对于上一个错误,请将声明从char
更改为wchar_t
以进行编译。