繁体   English   中英

Visual Studio 2015 Android本机C ++嵌套的共享库引用导致崩溃

[英]Visual Studio 2015 Android native C++ nested shared object reference causes crash

在Android开发方面,我有点菜鸟,而且我习惯了在Visual Studio中进行本机Windows开发,并且希望将基于stdout控制台的测试应用程序从Windows移植到Android。 我有一个引用共享对象项目的Java APK项目,该项目本身引用了另一个共享对象。 这种嵌套的共享库引用显然会导致崩溃,然后我才能输入任何本机代码,如下所示:

引发异常:java.lang.UnsatisfiedLinkError

调用堆栈:

>   android.app.NativeActivity.onCreate(android.os.Bundle savedInstanceState) Line 182  Java
    android.app.Activity.performCreate(android.os.Bundle icicle) Line 6679  Java
    android.app.Instrumentation.callActivityOnCreate(android.app.Activity activity, android.os.Bundle icicle) Line 1118 Java
    android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord r, android.content.Intent customIntent) Line 2618  Java
    android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord r, android.content.Intent customIntent, java.lang.String reason) Line 2726  Java
    android.app.ActivityThread.-wrap12(android.app.ActivityThread , android.app.ActivityThread$ActivityClientRecord r, android.content.Intent customIntent, java.lang.String reason)    Java
    android.app.ActivityThread$H.handleMessage(android.os.Message msg) Line 1477    Java
    android.os.Handler.dispatchMessage(android.os.Message msg) Line 102 Java
    android.os.Looper.loop Line 154 Java
    android.app.ActivityThread.main(java.lang.String[] args) Line 6119  Java
    java.lang.reflect.Method.invoke Java
    com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() Line 886   Java
    com.android.internal.os.ZygoteInit.main(java.lang.String[] argv) Line 776   Java

我在本机部分中实现了ANativeActivity_onCreate函数,如下所示:

void ANativeActivity_onCreate(ANativeActivity* activity, void* savedState, size_t savedStateSize)
{
    printf("hello?");
}

可以在Java中崩溃,然后才能输入此本机函数。 就是说,如果我删除解决方案中对另一个共享库项目的依赖关系引用,就可以很好地输入该函数,但是,当然,问题在于如果要使用该共享库项目,则需要使用该共享库项目。比这更有用的东西。

我在APK项目中根本没有添加任何Java代码,因此它只是Visual Studio中的基本模板。

在尝试构建本机应用程序之前,先熟悉一下Android是个好主意。 至少您会熟悉SDK,框架,Android状态,转换和生命周期事件。 如果它位于SDK或本机代码中,它也将帮助您调试问题所在。

您对Java完成了任何标准的C#/ C ++ / C吗? 如果您还没有开始,那么这是比Android更好的起点,至少您将了解如何执行本机方法连接和链接。 这是我无法提供的,但是我强烈建议您在Android中使用控制台日志记录应用程序创建基本的Hello World。 您需要花费几个小时来做​​出并回答许多问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM