我正在学习如何创建一个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'
暂无答案!
目前还没有任何答案,快来回答吧!