【发布时间】:2018-05-26 04:39:24
【问题描述】:
我目前正在努力为 UWP 构建 OpenCV。
我已经用谷歌搜索了很多,发现 Microsoft's OpenCV Github Repo 从技术上讲应该可以发挥作用。但是,这个 repo 以及我在这方面发现的几乎所有其他内容都已过时(Visual Studio 2015、旧 OpenCV 版本等)。我需要使用 OpenCV 3.3,因为它是一个跨平台项目,我不想仅仅因为一个过时的 git repo 而重新编译其他所有内容。
任何人都可以从 UWP 的官方存储库中解释使用 CMake 构建 OpenCV 的过程吗?
我的第一次尝试是简单地使用 Windows Dll,但是我的应用程序却对我喊“加载模块失败”。然后,我尝试构建 OpenCV 的 Visual Studio 项目文件,如 here 和 here 所述。但是,这对我不起作用,因为它会引发以下错误:
cmake/OpenCVUtils.cmake:440 处的 CMake 错误(如果): 如果给定参数:
"(" "OR" "OFF" ")"指定了未知参数 调用堆栈(最近的调用优先): CMakeLists.txt:317 (OCV_OPTION)
它还告诉我检查 CMakeOutput.log,但到处都是 0 错误。
如果有人能告诉我如何消除此错误或在 CMake GUI 中进行哪些更改以为 UWP 构建 OpenCV,那就太好了!
编辑:
我还尝试使用平台/winrt 中的 WinRT 平台特定工具链编译 OpenCV。虽然它并没有真正改变任何东西(我什至不确定它是否应该),但我仍然得到“无法加载 Dll:找不到指定的模块”。也许 GPPK 的假设是正确的,他认为这更像是一个 UWP 问题而不是 OpenCV 问题。无论如何,如果有人对此有所了解,我真的很想得到一些帮助!
【问题讨论】:
-
很抱歉我没有在问题中提到这一点,但作者实际上除了使用我也提到过的过时的 microsoft repo 之外什么都没做。
-
我认为您的 UWP 问题可能比 OpenCV 问题更多。如果它给你一个加载模块失败的错误,你确定你已经在正确的地方添加了 DLL 等吗?
-
95% 确定。我实际上构建了自己的 C++ Dll,它使用 OpenCV 并导出了我在 Unity 中从 C# 调用的 C 接口。它已经在 Android、Windows x64 和 Windows x86 上运行。我对 UWP 遵循的程序与其他程序完全相同。起初我希望我可以将用于 x86 Windows 的相同 Dll 用于 UWP,但现在我不这么认为了(如果没有必要,微软自己为什么要额外提供一个 git repo?)。关于 Dll 的位置:我创建了一个没有 OpenCV 的演示 Dll,它正在工作,所以我认为一切都应该是正确的。