【发布时间】:2015-11-16 14:22:28
【问题描述】:
我在 Visual Studio 2015 中创建了一个适用于 Android 的 Native-Activity 应用程序。如果我只运行示例代码,该应用程序就可以运行。我想在我的应用程序中使用外部库。为此,我执行以下操作:
- 将包含目录添加到 C/C++->常规->其他包含目录
- 将 lib/x86 路径添加到 Linker->General->Additional Library Directories
- 将库名称添加到链接器->输入->库依赖项
通过这些设置,我可以在我的项目中使用一些库代码并对其进行编译。例如,如果我应该省略库目录,编译器会抱怨未实现的函数。
但如果我在模拟器或安卓手机上运行生成的 apk,它会立即崩溃,甚至在遇到任何断点之前。
即使我实际上不使用该库(注释掉我自己的所有代码),只是链接它,应用程序也会崩溃。
我得到的一个线索是,即使该库用于编译应用程序,它也不会被复制到 apk 文件中。我已经解压了 apk,它在 lib\x86 中包含 2 个文件:gdbserver 和 libAndroid1.so(这是我本机活动的编译版本)。但是我链接的库不存在。
我想我应该在项目中的某个地方指出我希望我的库包含在 apk 中,但我应该在哪里做呢?
【问题讨论】:
-
“它在 lib\x86 中包含 2 个文件”。所以,只是为了确保:您的 Android 手机和您创建的用于模拟器的 AVD 都是基于 x86 的?
-
不,手机是基于 ARM 的。 VS 生成两个 apk 文件:每个平台一个。这取决于我在编译和运行时选择的配置。 ARM apk 包含相同的文件,但在 lib\armeabi-v7a 中。
-
您能否分享您遇到的问题的 Android Logcat 日志?
标签: c++ android-ndk visual-studio-2015 dynamic-linking