在Java(JNI)中将GAWK用作本机函数

在Java(JNI)中将GAWK用作本机函数,java,c,awk,java-native-interface,Java,C,Awk,Java Native Interface,我正在尝试将GAWK库(c语言)构建为一个dll文件,这样我就可以直接从Java代码中访问它,而无需执行外部进程(作为“本机”函数) 由于使用GAWK源代码很容易,所以使用GAWK源代码非常复杂,特别是对于不熟悉C语言的用户 我需要两件事的帮助: 如何正确构建复杂环境 如何识别 代码中应该在哪里编写“doAwk”函数(I 迷失在他们的代码中) 或者,如果你熟悉一个地方,我可以在那里找到一个已经可以使用的版本,那将是最好的:) 谢谢 在Java中实现所需的特性可能会更简单。它还可以避免你的应用程序

我正在尝试将GAWK库(c语言)构建为一个dll文件,这样我就可以直接从Java代码中访问它,而无需执行外部进程(作为“本机”函数)

由于使用GAWK源代码很容易,所以使用GAWK源代码非常复杂,特别是对于不熟悉C语言的用户

我需要两件事的帮助:

  • 如何正确构建复杂环境
  • 如何识别 代码中应该在哪里编写“doAwk”函数(I 迷失在他们的代码中)
  • 或者,如果你熟悉一个地方,我可以在那里找到一个已经可以使用的版本,那将是最好的:)


    谢谢

    在Java中实现所需的特性可能会更简单。它还可以避免你的应用程序受到GPL的污染。为什么不把它称为一个外部过程呢?Gawk从stdin读取并写入stdout,这比转换每个函数参数和响应类型更容易与Java程序交换。此外,故障排除也会更容易,因为您可以手动执行“怀疑”命令。@Olivier,它实际上不会更简单。。。我需要功能齐全的AWK。。。现在。。它有一个java库,但它的性能比c版本差得多。。。因此,不幸的是,用java实现不是一种选择…:(好的,我理解。但别忘了awk是一种脚本语言。你可以节省脚本解释器的加载时间,但我假设大部分执行时间都是一样的。即使可行,这也不是一个简单的项目。你必须将一个程序转换为独立的程序(它将许多状态保持为静态变量)进入一个可重入的解释器。这听起来很有趣。为什么不使用,因为所有的工作都已经完成了?除了一些像regex RS这样的功能外,perl可以做gawk所能做的一切。甚至曾经有一个awk->perl转换器;-)