C++ 在visual studio 2015中将库链接到android ndk应用程序

C++ 在visual studio 2015中将库链接到android ndk应用程序,c++,android-ndk,visual-studio-2015,dynamic-linking,C++,Android Ndk,Visual Studio 2015,Dynamic Linking,我已经在Visual Studio 2015中为Android创建了一个本机活动应用程序。如果我只运行示例代码,应用程序就可以运行了。但我想在我的应用程序中使用和外部库。为此,我做了以下工作: 将include目录添加到C/C++->General->Additional include目录 将lib/x86路径添加到链接器->常规->其他库目录 将库名称添加到链接器->输入->库依赖项 通过这些设置,我可以在我的项目中使用一些库代码并编译它。例如,如果省略库目录,编译器会抱怨未实现的函数 但如

我已经在Visual Studio 2015中为Android创建了一个本机活动应用程序。如果我只运行示例代码,应用程序就可以运行了。但我想在我的应用程序中使用和外部库。为此,我做了以下工作:

  • 将include目录添加到C/C++->General->Additional include目录
  • 将lib/x86路径添加到链接器->常规->其他库目录
  • 将库名称添加到链接器->输入->库依赖项
  • 通过这些设置,我可以在我的项目中使用一些库代码并编译它。例如,如果省略库目录,编译器会抱怨未实现的函数

    但如果我在模拟器或android手机上运行生成的apk,它会立即崩溃,甚至在任何断点被击中之前

    即使我实际上没有使用库(注释掉我自己的所有代码),只是链接它,应用程序也会崩溃

    我得到的一条线索是,即使库用于编译应用程序,它也不会复制到apk文件中。我已经解包了apk,它包括lib\x86:gdbserver和libAndroid1.so(这是我本机活动的编译版本)中的2个文件。但我链接的图书馆不在那里


    我想我应该在项目的某个地方指出,我希望我的库包含在apk中,但我应该在哪里做呢?

    第2步实际上应该是:将库\$(平台)路径添加到链接器->常规->其他库目录

    我怀疑您的Android设备是否运行x86(除非它在模拟器中)$(配置)将自动解析为调试或发布,$(平台)将自动解析为ARM、ARM64、x86等


    每个库平台都有一个单独的文件夹。

    “它在lib\x86中包含2个文件”。所以,为了确保:你的Android手机和你为在模拟器中使用而创建的AVD都是基于x86的?不,手机是基于ARM的。VS生成两个apk文件:每个平台一个。这取决于编译和运行时选择的配置。ARM apk包含相同的文件,但在lib\armeabi-v7a中。您能否共享您遇到的问题的Android Logcat日志?