【发布时间】:2014-08-07 20:02:11
【问题描述】:
我创建了一个使用 C/C++ Dll 的 Unity3d 项目。 所以首先我在 Visual Studio 中制作了 dll。
// mydll.cpp
#define EXPORT_API __declspec(dllexport)
extern "C" {
int EXPORT_API add(int a, int b)
{
return a+b;
}
}
我将这个 dll 添加到我的 Unity3D 项目中并调用
// C# script in Unity3D
public class TestDll : MonoBehaviour {
[DllImport("mydll")]
private static extern int add (int a, int b);
void Start() {
int a = add (100, 200);
}
}
这段代码运行良好,我在 Unity3D 编辑器中得到了正确的结果。
所以我将这个项目构建到 android 平台并获得了一个 apk。 我在我的 android 设备上安装并运行了这个 apk,但该应用程序不起作用。 该应用没有运行 Dll 函数。
怎么了?我试图在谷歌和这里找到解决方案,但还没有得到任何东西。 请帮我。 谢谢。
【问题讨论】:
-
android/ios 无法使用 dll
-
那么在这种情况下我该怎么办?无论如何,我想重用当前基于 C/C++ 的库。我可以把这个库模块做成.so或者其他文件格式,让android app可以使用吗?
-
Unity 会生成一个 Xcode 项目(对于 Android 来说可能也类似)。您必须将 C/C++ 代码添加到该项目并使用特定于平台的编译器为目标平台编译它。 Visual Studio 将不会生成 iOS/Android 或任何与 ARM 兼容的代码,至少 iOS 无法加载动态库,特别是 DLL(如果我的话,这是一种仅在桌面/x86 平台上可用的库格式) m 正确通知)。