首先,不支持C++库,如果需要可以先自己封装成C库
官方教程 Definition file | Kotlin Documentation
1.静态库 .lib(Windows) .a(Linux)
ffmpeg.def
package = ffmpeg
headers = libavcodec/avcodec.h libavformat/avformat.h
linkerOpts = -Ilib/ffmpeg/include -Llib/ffmpeg/lib -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -lavdevice -lpostproc
compilerOpts = -Ilib/ffmpeg/include
build.gradle.kts
nativeTarget.compilations.getByName("main") {
cinterops {
val dobby by creating {
defFile(project.file("lib/dobby/dobby.def"))
}
}
}
2. 动态库 .dll(Windows) .so(Linux)
- windows 和 静态库一样,编译完成后会生成dll和lib,链接lib文件并在PATH中添加dll即可
- linux没有a文件,直接链接so文件会自动找到导出符号
dobby.def
package = dobby
headers = dobby.h
linkerOpts = lib/libdobby.so
compilerOpts = -Ilib/dobby
build.gradle.kts
nativeTarget.binaries.executable {
runTask?.environment("PATH", "%PATH%;lib/ffmpeg/bin;")
}
nativeTarget.compilations.getByName("main") {
cinterops {
val dobby by creating {
defFile(project.file("lib/ffmpeg/ffmpeg.def"))
}
}
}