java - Gradle:将 native 库与现有的外部库链接

标签 java gradle native

我正在构建一个 API,以使用 swig 和 gradle 作为构建系统在 C、Puthon 和 JVM 之间创建桥梁。问题是,如果我想将 swig 生成的源代码链接到 python 头文件,我需要将这些头文件包含到构建中,但我找不到明确的方法来做到这一点。遗憾的是,gradle 目前缺乏原生构建的文档。

我从不同的来源组成了以下模型定义:

model {
    repositories {
        libs(PrebuiltLibraries) {
            pythonHeaders {
                headers.srcDirs "$pythonPath/include"
            }

            jdkHeaders{...}
        }
    }

    components {
        transport(NativeLibrarySpec) {
            sources {
                lib library: 'pythonHeaders'
                c {
                    source {...}
                    exportedHeaders {...}
                }
            }
        }

    }

    toolChains {...}
}

此定义适用于静态库,但不适用于共享库,因为 python36.lib不在链接器路径上。
PreabuiltLibrary接口(interface)有一个名为 binaries 的字段,但我看不到使用 DSL 添加到它的方法。是否有任何标准的修复方法或解决方法?

最佳答案

Alexander Volanis here 提供的答案似乎正在工作。在 Anaconda 中,静态库放在 libs Anaconda 根目录中的目录和 dll-s。

关于java - Gradle:将 native 库与现有的外部库链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48406234/

相关文章:

java - 原型(prototype)是反模式吗?

java - 在java中创建数组对象

android - DexException:多个dex文件定义

javascript - react : apply multiple filters to array

javascript - 从 javaScript 访问 native windows api

java - 了解 Java 中的数组索引

java - Tomcat 在幕后做了什么来为您提供 DataSource 的实现

java - 如何在运行 Aeron 示例时设置 Aeron 订阅者和发布者数量限制

安卓工作室 : Could not resolve com. google.code.gson :gson:2. 7

.net - 如何在Delphi中使用.Net程序集而不在GAC或COM中注册它?