使用VS2015调试Android的C++动态链接库
2016-10-22 17:58
351 查看
使用VS2015调试Android C C++动态链接库
VS2015相对于过去的IDE在跨平台方面做了很大的支持,支持对linux操作系统进行远程GDB调试,由于VS2015强大的C/C++调试功能,本文将介绍,如何用VS2015调试android的动态链接库,跟进行NDK开发。首先需要去官网下载VS2015 社区版 这个版本是免费使用的虽然部分功能有所限制,但是已经够一般人进行使用了。安装方法可以参照百度经验这里对重复的东西不进行过多的介绍。
- 安装完了之后可以在菜单栏的tools->options->cross-platform修改配置信息。
- 这里假设看文章的人已经对java层如何调用NDK层已经有简单了解了,并且能写简单hello-jni。
-然后在解决方案,右键再建一个动态链接库
- 选择dynamic shared library
- build solution 如果有错误请看本文结尾(可能是环境配置的问题) 没错误的话继续,在android层建一个本地方法。
package com.Android1; import android.app.Activity; import android.widget.TextView; import android.os.Bundle; public class Android1 extends Activity { static{ System.loadLibrary("hello-jni"); } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* Create a TextView and set its text to "Hello world" */ TextView tv = new TextView(this); tv.setText( stringFromJNI() ); setContentView(tv); } public native String stringFromJNI(); //获取原生层字符串 }
进入工程目录下的android目录下的src目录 使用javah生成头文件
这边使用classpath 我已经配置到系统环境变量了,如果没有配置的话可能会出现找不android v4 v6库之类。
将头文件复制到动态链接库工程根目录下然后创建一个.c文件,并将该头文件引入输入下面代码。将原来的sharedObject头文件跟CPP文件都删了,因为这里用不到
#include <string.h> #include "com_Android1_Android1.h" jstring Java_com_Android1_Android1_stringFromJNI(JNIEnv* env, jobject thiz) { return (*env)->NewStringUTF(env, "Hello from JNI ! "); }
进入shredobject工程选项将预编译关了否则可能会出错
对共享库进行编译,正常应该能顺利编译通过。修改共享库生成名称
-对解决方案选择默认启动项目
-选择依赖
点击Android工程目录下的References右键添加引用,选择确定。然后就可以运行了
运行后调试更简单了,在你要调试的本地代码按F9打断电运行,程序运行后就会在对应的地方中断
接下去就可以自由发挥了。
编译错误原因:
- 出现clang.exe错误 版本不对应 ndk r12b 用的是lang3.8 楼主的就是这个版本如果用的是3.6版本的需要使用ndk r10e
- 上面的解决不 了可以尝试安装插件 clang with microsoft codegen 安装方式在 tools->extensions and update 搜索clang安装就可以了
- 如果出现gnu_stlstatic 找不到,请将ndk下对应平台的stl库手动添加
- 对于还有其他问题可以留言楼主有看到的话会及时回复
由于工程非常少 代码都给上了这里就不分享项目工程了,对于按照上述方法还出错的建议使用默认环境,大部分可能出错的地方都是clang.exe错误。 或者是NDK版本不对应找不到对应的库。
相关文章推荐
- 使用VS2015 创建C++动态链接库并调用
- 使用Visual Studio 2015调试Android平台Cocos2d-x游戏的C++代码
- 题目:使用VS2015与VS2013 创建C++动态链接库并调用
- VS2015 使用 Visual Studio Emulator For Android 调试无法命中断点的解决办法?
- 使用GDB调试Android中的C/C++程序
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)
- 【记录】解决VS2015调试Xamarin程序一闪而过(使用微软ANDROID模拟器)
- 使用VS2015进行C++开发的6个主要原因
- Vs2015新建Android程序启动调试无响应
- 如何使用arm-eabi-gdb调试android c/c++程序
- VS2015 Xamarin调试android版本过低修改
- 使用VS2015进行C++开发的6个主要原因
- Java调用C++动态链接库dll,有详细过程。VS2015+Eclipse以及失败解决方案
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)
- 工具(1):使用lua生成vs2015的工程文件/将已有的C++文件生成vs2015工程文件
- 如何使用arm-eabi-gdb调试android c/c++程序
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS) (转)
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试