用jna调用c++写的dll文件出错

程序运行直接显示停止运行

这是调用dll中方法的

@Component
public class DllUtils {

	  public static interface CLibrary extends Library {

	        CLibrary INSTANCE = (CLibrary)Native.loadLibrary("C:\\Users\\admin\\Desktop\\dllTest\\KeeperClient",CLibrary.class);
	        
	        public int MisPosInterface(String arg1,String arg2,String arg3,String arg4,String arg5,String arg6,String arg7);
	    
	        public int MisPosInterface(String arg1,String arg2,String arg3);
	  }
}

这是c++的dll文件里面函数定义
int __stdcall MisPosInterface (void* input, void* output)

dll文件需要与java对应的位数相同,32位对应32位,64位对应64位

刚开始用64位的调用的时候报错,就把jdk换成32位的了,调用出现上面那个页面后dll文件的日志有生成,提供dll的说32和64都可以 :rofl:

c++的void*类型建议jna用Pointer类型,还有你这个接口 建议你单独提出来 不要内部

2 Likes