安卓工作室C++;NDK库示例 我想下载一些用C或C++编写的Android Studio NDK项目的工作示例,这些代码将被编译到.SO库(或者我可以从中提取的APK)。 我已经用Android.mk build尝试过ndkbuild,也用CMakeLists.txt尝试过CMake,Windows上的官方和非官方教程

安卓工作室C++;NDK库示例 我想下载一些用C或C++编写的Android Studio NDK项目的工作示例,这些代码将被编译到.SO库(或者我可以从中提取的APK)。 我已经用Android.mk build尝试过ndkbuild,也用CMakeLists.txt尝试过CMake,Windows上的官方和非官方教程,android,unity3d,android-ndk,Android,Unity3d,Android Ndk,如果我从同一个应用程序(java)在android上尝试它们,它是有效的,但我想在android上使用Unity3D中的NDK,我会不断得到DllNotFoundException 我将我的和项目上传到github。首先,这是您正在寻找的Android项目插件示例 知道如何自己做这件事是非常重要的 这以前很难做到,但最新的Android Studio使现在使用C/C++或生成库变得更容易。将Android Studio升级到最新版本,然后按照下面的步骤创建一个C++插件。 1。在Android

如果我从同一个应用程序(java)在android上尝试它们,它是有效的,但我想在android上使用Unity3D中的NDK,我会不断得到DllNotFoundException

我将我的和项目上传到github。

首先,这是您正在寻找的Android项目插件示例

知道如何自己做这件事是非常重要的

这以前很难做到,但最新的Android Studio使现在使用C/C++或生成库变得更容易。将Android Studio升级到最新版本,然后按照下面的步骤创建一个C++插件。 1。在Android Studio中创建一个新项目

<强> 2 < /强>检查“强”>包含C++支持> /强>以启用C++ +< /P>

<> > 3 > <强> >下拉菜单上,在C++标准下拉菜单中检查<强> C++ 11 >强>。你需要C++ 11来实际使用最有用的C++特性。此外,如果需要,请启用异常或frtti

就是这样

构建插件时:

调试库应位于:

\app\build\intermediates\cmake\debug\obj\
\app\build\intermediates\cmake\debug\obj\
发布库应位于:

\app\build\intermediates\cmake\debug\obj\
\app\build\intermediates\cmake\debug\obj\
如果您只看到调试版本而没有看到插件的发布版本,请检查如何使其显示


您在Android上获得DllNotFoundException的可能原因:

1。您没有将C/C++函数包装在
外部“C”
中。必须对.cpp文件中的每个函数执行此操作,或者在.h文件中的函数中执行此操作

2。您将插件放在错误的Unity文件夹中

在Unity项目中,在
\app\build\intermediates\cmake\release\obj
生成的armeabi-v7a和x86插件应放置在
Assets\plugins\Android\libs\armeabi-v7a\
Assets\plugins\Android\libs\x86\

确保这些拼写正确。有关此操作的更多信息,请参阅

3。您从C#侧加载的内容不正确

假设插件的名称是libScreenshot.a,在加载它时,不要包含lib前缀,也不要添加
.a

[DllImport("Screenshot", CallingConvention = CallingConvention.Cdecl)]
    public static extern void takeScreenshot();

请发布异常的完整堆栈跟踪,而不仅仅是名称,因为这应该表明缺少哪个库。你看到我留下的答案了吗?谢谢,我看到了并下载了该项目,我将在10天内没有PC,所以我将尝试它。谢谢,起初,我使用了来自
\app\build\outputs\…
的obj,我的Unity文件夹名为lib,而不是libs,但后来它仍然不起作用。现在它起作用了