我知道Unity在运行时无法动态调用插件中的第三方库(非标准库)。因此,在构建之前,我们需要在插件中包含一些静态库。但是,我不清楚如何设置Xcode项目,其中包括一些静态库和设置过程。
我尝试找到一些有关此主题的资源或教程,但我发现tutorials使用的是Visual Studio,而不是Xcode。
熟悉此主题的人吗?
答案 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 Paths
和Library 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方库是否成功。
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());
结果