【问题标题】:OpenCV UWP build failsOpenCV UWP 构建失败
【发布时间】:2018-05-08 22:54:33
【问题描述】:

我克隆了 OpenCV 的官方 github repo 并使用 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 有关?

【问题讨论】:

    标签: c++ visual-studio opencv cmake uwp


    【解决方案1】:

    看起来您正在混合使用UNICODE 和非UNICODE 构建。确保它们是一致的并且您使用正确类型的字符串(如果您愿意,可以使用 TEXT() 宏)。

    要验证,在VS中右击项目并选择Properties,然后展开C/C++ -> Preprocessor并勾选预处理器定义。单击该值旁边的向下箭头并单击 ,然后验证 UNICODE_UNICODE 均已定义。如果没有,请添加它们。您需要为每个配置重复此操作(您可以尝试选择“全部”,但如果您有冲突的选项,这可能会搞砸)。

    对于最后一个错误,将声明从char更改为wchar_t以编译。

    【讨论】:

    • 感谢您的回答。有没有办法在不修改 OpenCV 源代码的情况下解决这个问题?如果阅读有关更改 VS 中的字符集的信息,不幸的是,VS 2015 中不再存在该选项(或者我找不到它)
    • 很难给出准确的建议,因为您没有列出错误的来源。不过我添加了一些信息。
    猜你喜欢
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 2018-11-29
    • 2016-04-30
    相关资源
    最近更新 更多