0

我正在尝试使用 Objective Sharpie为 OpenCV 3.4 的目标 c 库(https://opencv.org/releases.html,预编译并使用额外模块从源代码构建)创建 C#绑定,但没有成功。要么我使用了错误的 Sharpie 参数,要么编译的 opencv2.framework 有问题。

工具/版本:

  • 记号笔 3.4.0
  • iphone11.2 SDK
  • OpenCV 3.4.0(预编译和/或使用额外模块从源代码成功构建)

我尝试了以下 Sharpie 参数(当当前目录包含 opencv2.framework 时):

$ sharpie bind -framework opencv2
$ Done. Exiting with error code 1.
error: opencv2: Umbrella header file does not exist: opencv2.framework/Headers/opencv2.h
$

那是因为伞形文件是 Headers/opencv.hpp。所以我将参数更改为:

$ sharpie bind -fx-umbrella opencv2.framework/Headers/opencv.hpp -framework opencv2    
Done. Exiting with error code 1.
error: opencv2: Umbrella header file does not exist: opencv2.framework/Headers/opencv2.h
$

在每个订单中都完全被忽略了。

我还尝试了许多其他可能性,例如仅定义 .a 文件(结合使用 lipo 删除包含的库):

$ sharpie bind opencv2.a
Parsing 1 header files...
warning: [SomePath]/opencv2.a: 'linker' input unused [-Wunused-command-line-argument]
warning: argument unused during compilation: '-c' [-Wunused-command-line-argument]
warning: argument unused during compilation: '-fno-spell-checking' [-Wunused-command-line-argument]
warning: argument unused during compilation: '-Xclang -detailed-preprocessing-record' [-Wunused-command-line-argument]
error: unable to handle compilation, expected exactly one compiler job in ''
Error while processing [SomePath]/opencv2.a.
Done. Exiting with error code 1.
error: Clang failed to parse input and exited with code 1
$

或直接使用以下方法解决伞头:

$ sharpie bind Headers/opencv.hpp

失败是因为找不到“opencv2/...hpp”文件,因为每个包含的 hpp 都引用“opencv2/...”结构

4

1 回答 1

0

文档中的事实非常微妙,但是它指出

-framework 选项不允许传递显式头文件。

还有那个

在引擎盖下,指定 -framework 只是一个捷径。

因此,如果您需要指定伞头文件,则可以将参数编写为

sharpie bind opencv2.framework/Headers/opencv.hpp -scope opencv2.framework/Headers -c -F .

这样就开始了该过程,但是前面还有无数其他问题。在尝试让 Sharpie 与 OpenCV 一起工作一天后,我个人放弃了,但祝所有走这条路的人好运。

于 2018-06-29T14:41:57.077 回答