我想从动态共享对象库[用C / C ++开发]中获取两个函数。要从我的Java应用程序调用此DLL,我使用了Java JNI。但是,在编译Java应用程序后,我发现编译器已经生成了一个头文件jni.h.我在我的DLL中添加了该文件,但是当我尝试编译DLL项目时,我收到了以下编译错误:
致命错误:jni.h:没有这样的文件或目录#include
我尝试包含头文件目录:
/I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32"
没有任何成功
头文件 JNIServerLib.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class jniserver_JNIServer */
#ifndef _Included_jniserver_JNIServer
#define _Included_jniserver_JNIServer
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: jniserver_JNIServer
* Method: BZ_receiving
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_jniserver_JNIServer_BZ_receiving
(JNIEnv *, jobject);
/*
* Class: jniserver_JNIServer
* Method: BZ_sending
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_jniserver_JNIServer_BZ_sending
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
简单的java程序 JNIServer.java
public class JNIServer {
public native void BZ_receiving();
public native void BZ_sending();
/**
* @param args the command line arguments
*/
static{
System.loadLibrary("JNIServer");
}
public static void main(String[] args) {
new JNIServer().BZ_receiving();
new JNIServer().BZ_sending();
}
}
答案 0 :(得分:0)
ggplot() +
geom_point(data=d, mapping=aes(x=x, y=y)) +
scale_x_continuous(expand=c(0,0), labels=lbl, breaks=seq(1,6,1)) +
theme(axis.text.x=element_text(hjust=seq(from=0,to=1,length.out=6)))
与文件路径之间不能有差距。将其更改为
/I
应该有用。
答案 1 :(得分:0)
示例
以下命令按以下顺序查找MAIN.c请求的包含文件:首先在包含MAIN.c的目录中,然后在\ INCLUDE目录中,然后在\ MY \ INCLUDE目录中,最后在分配给INCLUDE环境变量的目录。
CL /I \INCLUDE /I\MY\INCLUDE MAIN.C
确保头文件位于Include目录之一。