如何设置使用java和原生c++代码的gradle项目?

zfciruhq  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(300)

我正在学习如何创建一个gradle项目,在这个项目中我想使用jni从java调用本机c代码。我是遵循这个jetbrains教程,这是工作的很好,我了解它有点。
但是本教程中的项目使用c本机代码,但是我想使用c
来代替。问题是,我尝试了一些方法,但老实说,我不知道我在做什么。我的尝试以一个问题结束,即如果我生成项目,则不会生成库(.dll,因为我使用的是windows)。我没有收到任何错误消息,dll只是呈现的和我用c构建的一样。
我应该如何修改build.gradle来构建c++本机代码而不是c?
为我工作的build.gradle(但使用c,我想更改它)如下所示:

apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'c'

mainClassName = 'HelloWorld'

repositories {
    mavenCentral()
}
dependencies {
    testCompile('junit:junit:4.12')
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

test {
    systemProperty "java.library.path", file("${buildDir}/libs/hello/shared").absolutePath
}

model {
    platforms {
        x64 {
            architecture "x64"
        }
    }

    components {
        hello(NativeLibrarySpec) {
            targetPlatform "x64"
            binaries.all {
                if (targetPlatform.operatingSystem.macOsX) {
                    cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include"
                    cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/darwin"
                    cCompiler.args '-mmacosx-version-min=10.4'
                    linker.args '-mmacosx-version-min=10.4'
                } else if (targetPlatform.operatingSystem.linux) {
                    cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include"
                    cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/linux"
                    cCompiler.args '-D_FILE_OFFSET_BITS=64'
                } else if (targetPlatform.operatingSystem.windows) {
                    cCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include"
                    cCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include/win32"
                    linker.args "Shlwapi.lib", "Advapi32.lib"
                } else if (targetPlatform.operatingSystem.freeBSD) {
                    cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include"
                    cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/freebsd"
                }
            }
        }
    }
}

test.dependsOn 'helloSharedLibrary'

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题