Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何导入visual c++;android studio项目中的库? 我在Visual Studio 2017中为iOS、UWP和Android创建了一个共享的Visual C++跨平台移动库。我成功地为库创建了一个Windows RT组件包装器,以便在C#UWP中使用。我删除了iOS库,因为我不需要它。剩下的就是Android项目。目前,我正在努力为共享库编写一个包装器,并将其导入android studio。我查看了MSDN上提供的文档,但它更深入地讨论了跨平台的C++应用程序,而没有充分说明如何利用共享静态LIBS。_Android_C++_Android Studio_Java Native Interface - Fatal编程技术网

如何导入visual c++;android studio项目中的库? 我在Visual Studio 2017中为iOS、UWP和Android创建了一个共享的Visual C++跨平台移动库。我成功地为库创建了一个Windows RT组件包装器,以便在C#UWP中使用。我删除了iOS库,因为我不需要它。剩下的就是Android项目。目前,我正在努力为共享库编写一个包装器,并将其导入android studio。我查看了MSDN上提供的文档,但它更深入地讨论了跨平台的C++应用程序,而没有充分说明如何利用共享静态LIBS。

如何导入visual c++;android studio项目中的库? 我在Visual Studio 2017中为iOS、UWP和Android创建了一个共享的Visual C++跨平台移动库。我成功地为库创建了一个Windows RT组件包装器,以便在C#UWP中使用。我删除了iOS库,因为我不需要它。剩下的就是Android项目。目前,我正在努力为共享库编写一个包装器,并将其导入android studio。我查看了MSDN上提供的文档,但它更深入地讨论了跨平台的C++应用程序,而没有充分说明如何利用共享静态LIBS。,android,c++,android-studio,java-native-interface,Android,C++,Android Studio,Java Native Interface,RandString.java: package com.myapplication; /** * Created by yorel56 on 7/26/2017. */ public class RandString { static{ System.loadLibrary("libRandString"); } public native String GetString(); public native String GetStrin

RandString.java:

package com.myapplication;

/**
 * Created by yorel56 on 7/26/2017.
 */

public class RandString {
    static{
        System.loadLibrary("libRandString");
    }
    public native String GetString();
    public native String GetString(int index);
}

build.gradle(模块):


我目前遇到的错误是这里不允许使用“native”,当我选择让Android Studio通过在native_lib.cpp中创建函数来修复它时,我仍然会遇到错误。我试着按照文档进行操作。

您可以使用
libRandString.so
,它是用Visual Studio构建的;您不需要
externalNativeBuild
块而不是
ndkBuild
任务,也不需要build.gradle中的
nativeLibsToJar
任务。Android工作室将从JNILBS我试图利用VS模板创建一个C++跨平台的移动共享LIB,我可以使用ULB来进行UWP项目,但是我在Android的套件中遇到了麻烦。关于MSDN的文档更多地倾向于创建一个完全跨平台的C++移动项目,而我不是。我在本地开发,但希望有一个特定的共享功能用C++编写。所以,基本上,你有一个本地Android java应用程序,你试图用JNI写C++的库吗?你有什么问题吗?你尝试了什么,出了什么问题?您是否可以创建一个显示代码相关部分并显示您收到的任何异常或错误消息?正确,上述内容是否有帮助?本机端的C/C++函数必须使用一些修饰符和特殊的严格语法声明。如果您还没有这样做,您应该安装Hello_JNI Android Studio示例项目或类似项目并使用它。是的,编辑是一个很大的改进。我现在得到以下异常java.lang.UnsatisfiedLinkError,无法找到librandstring.so语句。我希望错误消息是针对
librandstring.so
的,大小写正确。这意味着你清理了你的身材。格雷德尔有点太多了。
apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.myapplication"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags ""
            }
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    sourceSets.main {
        jni.srcDirs = [] //disable automatic ndk-build call
        jniLibs.srcDir 'src/main/libs/' //integrate your libs from libs instead of jniLibs
    }

    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn(nativeLibsToJar)
    }

    task ndkBuild(type: Exec, description: 'compile native code') {
        def ndkDir = "C:\\Users\\yorel56\\AppData\\Local\\Android\\sdk\\ndk-bundle"
        workingDir "src/main/jni"
        commandLine "$ndkDir/ndk-build"
    }

    task nativeLibsToJar(type: Jar, description: 'create a jar archive of the native libs') {
        destinationDir file("$buildDir/native-libs")
        baseName 'native-libs'
        extension 'jar'
        from fileTree(dir: 'libs', include: '**/*.so')
        into 'lib/'
    }
    nativeLibsToJar.dependsOn {
        ndkBuild  // comment that, when you don't want to rerun ndk-build script
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}