【发布时间】:2016-09-05 02:23:24
【问题描述】:
我有一个来自此示例代码的非常简单的插件 (https://docs.unity3d.com/Manual/NativePlugins.html)。我正在使用插件中的值更新 UI 文本字段。这在编辑器中按预期工作,但在我构建独立应用程序时不起作用。我正在运行 Ubuntu 15.10。
图书馆是如何建造的:
gcc -shared PluginName.c -o PluginName.so
这是我迄今为止尝试过的:
- LD_LIBRARY_PATH 有什么问题?
- 将 .so 所在的目录添加到 LD_LIBRARY_PATH 中
- Unity 构建应用程序的方式是否存在问题?
- 尝试了不同的版本 (5.3.6)
- VM 上运行的操作系统是否存在问题?
- 尝试在另一台 PC 上运行 Ubuntu 15.10
- 也许插件需要'lib'前缀?
- 添加了“lib”前缀。
- 导入设置有问题吗?
- 检查导入设置,检查平台设置中的 x86_64
- 库是否需要位于不同的目录中?
- 插入插件
- 放入 Plugins/x86_64
- 与可执行文件放在同一目录中
似乎也很少有关于为 Linux 构建 Unity 插件的信息。一个端到端的例子会很有用。对此问题的任何帮助将不胜感激。
【问题讨论】:
-
您编写了所有这些,但未能提供您如何使用 C# 加载插件......
-
请看我问题第一行的链接。
[DllImport ("PluginName")] private static extern float FooPluginFunction (); -
你是否在编译中添加了-fPIC选项(你需要这个来创建一个共享对象,.so)
-
感谢您的建议。我没有使用这个特定的插件,而是使用了另一个有同样问题的插件。我刚刚尝试将 -fPIC 添加到此插件的构建命令中,我遇到了同样的问题。
-
@AndreiTumbar -fPIC 不是必需的,但可以防止将来出现问题。请看这篇帖子stackoverflow.com/questions/5311515/gcc-fpic-option。
标签: c ubuntu unity3d plugins unityscript