使用JNA构建C项目时出现问题

时间:2011-04-28 20:28:32

标签: java netbeans cygwin jna

尝试创建一个小型JNA程序。

生成头文件后立即尝试构建并创建dll文件。但是这个问题出现了......

我将Netbeans IDE与Cygwin一起使用,其他C / C ++项目也可以使用。

  

gcc:-mno-cygwin标志已经存在   删除;使用mingw目标   交叉编译。

     

make [2]:离开   目录   `/ cygdrive / C /用户/用户/文档/的NetBeansProjects / HelloWorldNative'

     

make [1]:离开目录   `/ cygdrive / C /用户/用户/文档/的NetBeansProjects / HelloWorldNative'

     

make [2]: *   [建设/调试/ Cygwin的窗口/ _ext / 1653581963 / HelloWorldNative.o]   错误1

     

make [1]: * [.build-conf]   错误2

     

make: * [。build-impl]错误   2

     

BUILD FAILED(退出值2,总时间:1秒)

我真的很想让Netbeans在这里工作,因为我是JNA的新手,希望能够快速进行更改和实验。所以不得不从控制台evry 5秒构建它是不可取的:S

3 个答案:

答案 0 :(得分:1)

过去几天我一直致力于实现Java + JNA + Cygwin解决方案。经过多次尝试和死胡同,我终于想出了一个完美的解决方案。我的JNA调用是getpwnam,chown和perror,这三个都是在Cygwin1.dll中实现的。您可以在http://vouters.dyndns.org/tima/Linux-OpenVMS-Java-Implementing_chown_in_Java.html

查看适用于我的上下文的完整解决方案

我希望我的编码和文档样式足够清晰。

答案 1 :(得分:0)

我想我有点失落。 JNA的重点在于它使您不必编写或编译本机代码。您需要提供有关您的本机代码正在执行的操作的更多详细信息。您是否正在尝试编译自己的dll,然后计划使用JNA进行访问?如果是这样,您可能没有正确设置Netbeans来构建DLL。我猜它正在尝试构建一个可执行文件,但找不到“主要”方法。

答案 2 :(得分:0)

在我提供的Java / JNA chown代码中,我调用的DLL是Cygwin1.dll,一个Cygwin发布的dll,其中包含我追踪的三个调用(getpwnam,chown和perror)。

为什么我需要Cygwin1.dll?因为这是Windows上唯一包含这些Unix入口点的DLL。我的目的仍然是尽可能多地编写可移植代码。 MinGW没有提供这些电话,我不得不放弃它。

微软可能肯定会提出类似于这些Unix调用的东西。但是这肯定会让我组装一个特定于Windows的代码。我确实不是在照顾这个。

希望这澄清