尝试创建一个小型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
答案 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的代码。我确实不是在照顾这个。希望这澄清