无法使用 iOS OpenCV 模块从 Titanium Appcelerator 编译 App

Can't compile App from Titanium Appcelerator with iOS OpenCV Module

我有一个问题已经持续了一个多月,但我找不到任何解决方案。 我创建了一个 Appcelerator Titanium 模块,它使用 OpenCV 框架。 我几乎尝试了我在互联网上找到的所有东西来让它工作,但没有成功。 该模块可以编译,但在构建使用它的应用程序时会崩溃。 为了深入挖掘问题,我通过 CLI 使用 appc run -p ios -l trace 编译应用程序以查看整个内容。这是我得到的:

[TRACE] ld: framework not found opencv2 [TRACE] clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果我在 module.xconfig 文件中声明框架,就会发生这种情况,如下所示:

OTHER_LDFLAGS=$(inherited) -framework opencv2

如果我不在文件中声明它,我得到:

[TRACE] symbols not found for architecture x86_64 [TRACE] clang: error: linker command failed with exit code 1 (use -v to see invocation)

好吧,opencv2.framework 文件位于模块的 /ios 文件夹中。

这是我目前尝试的方法,将 OpenCV Framework 放入项目中:

OpenCV Official Example for XCode

Compiling it from scratch and then adding to the Project

brew install opencv and then adding it to the project

我这样配置 Framework Search Paths

$(inherited) $(PROJECT_DIR) $(SRCROOT)

Header Search Paths 像这样:

$(inherited) "$(TITANIUM_SDK)/iphone/include" /usr/local/Cellar/opencv/4.4.0/include(最后一个,由brew CLI command安装时。

Other Linker Flags的配置是这样的:

我从本教程中得到的配置:OpenCV on XCode

最后,我尝试通过右键单击项目名称并添加文件,从项目 OpenCV Framework 的源中添加 .dylib 文件。

所以,我尝试了所有我能找到的方法来解决它,但我无法让它工作。 很抱歉问了这么长的问题,但我完全不知道如何进行这项工作。

请帮帮我!

首先,opencv2.framework 会自动复制到 XCode /ios 文件夹(如果您选择了“根据需要复制文件”)。但是,Appcelerator 需要将第 3 方框架放在 /ios/platform 文件夹中。所以,我把它移到了那里。

其次,我将 -lz 添加到 Build Settings 中的 Other Linker Flags

这解决了问题。我必须感谢 TiSlack(Appcelerator 平台社区)的团队和开发人员,他们帮助我度过了难关。迈克尔和汉斯,谢谢!

这是一个帮助我在我的 Macbook Pro Mojave 10.14.6 上安装 OpenCV4 的视频。我尝试使用另一个视频安装 OpenCV,它导致我收到与您的类似的链接器错误。

基本上,问题是我为 /lib 和 /include 文件夹指定的路径。

https://www.youtube.com/watch?edufilter=NULL&v=HxNZEa7Slyk