我写AC库JNA包装,在cygwin下用gcc编译。 根据我如何执行该包装器JNA Java应用程序要么只是挂起(如果为下蚀单元测试执行)或者与无效存储器异常终止。 这个问题似乎只发生在C库写的东西无论是标准输出或标准错误。 这是我最小的(不)工作示例:
add.c
#include <stdio.h>
int add (int x, int y)
{
fprintf(stdout, "hello world\n" );
return x + y;
}
JNA包装
public interface Add extends Library
{
Add INSTANCE = (Add) Native.loadLibrary("add", Add.class);
int add(int x, int y);
}
在cygwin下编译C文件如下:
gcc -g -Wall -c add.c
gcc -shared -o add.dll add.o
如果我删除线fprintf中的一切工作正常。 无论是add.dll和cygwin1.dll在Java目标文件夹。