如何通过Xcode构建包含OpenCV库(或其他第3方库)的插件以供Unity使用?

时间:2019-01-17 09:51:54

标签: xcode unity3d bundle static-libraries static-linking

我知道Unity在运行时无法动态调用插件中的第三方库(非标准库)。因此,在构建之前,我们需要在插件中包含一些静态库。但是,我不清楚如何设置Xcode项目,其中包括一些静态库和设置过程。

我尝试找到一些有关此主题的资源或教程,但我发现tutorials使用的是Visual Studio,而不是Xcode。

熟悉此主题的人吗?

2 个答案:

答案 0 :(得分:0)

您可以从下面提供的链接中获得所需的帮助-

https://github.com/darshanpv/OpenCV4Unity

https://forum.unity.com/threads/building-opencv-plugin-for-mac-osx.623662/#post-4179892

请尝试使用它们,如果您遇到任何问题,请告诉我。仅关注Mac OSX部分。

答案 1 :(得分:0)

最后,我尝试使用此方法并成功构建.bundle,其中包括另一个供Unity使用的第三方库。

让我以OpenCV库为例。

首先,单击project,您会看到Build Setting按钮。单击它并修改Header Search PathsLibrary Search Paths。就我而言,我输入/usr/local/Cellar/opencv/3.4.3/include/**/usr/local/Cellar/opencv/3.4.3/lib/**,然后单击targets并执行相同的操作。

此外,我们还需要在项目中添加OpenCV库,因为当Unity运行时,Unity无法动态调用其第3部分库。因此,您需要打包它们,然后Xcode会自动创建框架。

因此,单击Build Phases按钮。现在,您可以在此页面中看到Link Binary With Libraries,然后单击+按钮并单击add other...。然后,转到您的OpenCV库路径

  

/usr/local/Cellar/opencv/3.4.3/lib(对于我而言)

选择所有不带“ pythonx.x”的文件。

现在,您应该在Xcode IDE中看到Frameworks列表,然后您可以进行一些测试并检查添加第3方库是否成功。

enter image description here

c ++:

int ProcessImage()
{
    cv::Mat test(10, 10, CV_8UC1);  //use opencv library
    return test.rows;   // should return 10
}

c ++标头

#include <opencv2/imgproc.hpp>
#include <stdio.h>

extern "C"
{
    int ProcessImage();
}

c#

[DllImport("test")]   /*the name of Plugin is Test*/
private static extern int ProcessImage();

Debug.Log(ProcessImage().ToString());

结果

enter image description here