无法使用 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 文件夹指定的路径。
我有一个问题已经持续了一个多月,但我找不到任何解决方案。
我创建了一个 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 文件夹指定的路径。