如何在 JNI 代码中包含 cspi/spi.h 头文件?
How to include cspi/spi.h header file in JNI code?
我试图在 JNI C 代码中包含 spi.h 头文件,当 /usr/include/at-spi-1.0/cspi/spi.h 文件包含在 c 代码中我收到以下致命错误,如“fatal error: cspi/spi.h: No such file or directory”.
为了创建“.so”文件,我使用了如下命令:
sudo gcc -shared -fPIC -o libHelloJNI.so -I/usr/lib/jvm/java-7-openjdk-amd64/include -I/usr/lib/jvm/java-7-openjdk-amd64/include/linux -I/usr/include/at-spi-1.0/cspi HelloJNI.c
使用“-I”我成功包含了 JNI.h 头文件,但是当我尝试包含 /usr/include/at-spi-1.0/cspi/spi.h, file 我得到了 No such file or directory 的致命错误。
所以请查看以下代码并提供您的反馈!
#include<jni.h>
#include<cspi/spi.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"HelloJNI.h"
// Implementation of native method sayHello() of HelloJNI class
JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env,
jobject thisObj,jint a)
{
printf("Hello World! %d\n",a);
return;
}
JNIEXPORT void JNICALL JAVA_HelloJNI_initSPI(JNIEnv *env, jclass
cls)
{
int init_error;
init_error = SPI_init();
putenv("GTK_MODULES=gail:atk-bridge");
putenv("GNOME_ACCESSIBILITY=1");
if(init_error)
{
printf("First time error %d in Initialising
SPI\n",init_error);
}
else
{
printf("SPI Initialise successfully");
}
SPI_event_main();
return;
}
如果您在 #include
指令中指定 cspi/spi.h
,则在 -I
开关中不需要 cspi
。
改为:
-I/usr/include/at-spi-1.0/
我试图在 JNI C 代码中包含 spi.h 头文件,当 /usr/include/at-spi-1.0/cspi/spi.h 文件包含在 c 代码中我收到以下致命错误,如“fatal error: cspi/spi.h: No such file or directory”.
为了创建“.so”文件,我使用了如下命令:
sudo gcc -shared -fPIC -o libHelloJNI.so -I/usr/lib/jvm/java-7-openjdk-amd64/include -I/usr/lib/jvm/java-7-openjdk-amd64/include/linux -I/usr/include/at-spi-1.0/cspi HelloJNI.c
使用“-I”我成功包含了 JNI.h 头文件,但是当我尝试包含 /usr/include/at-spi-1.0/cspi/spi.h, file 我得到了 No such file or directory 的致命错误。
所以请查看以下代码并提供您的反馈!
#include<jni.h>
#include<cspi/spi.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"HelloJNI.h"
// Implementation of native method sayHello() of HelloJNI class
JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env,
jobject thisObj,jint a)
{
printf("Hello World! %d\n",a);
return;
}
JNIEXPORT void JNICALL JAVA_HelloJNI_initSPI(JNIEnv *env, jclass
cls)
{
int init_error;
init_error = SPI_init();
putenv("GTK_MODULES=gail:atk-bridge");
putenv("GNOME_ACCESSIBILITY=1");
if(init_error)
{
printf("First time error %d in Initialising
SPI\n",init_error);
}
else
{
printf("SPI Initialise successfully");
}
SPI_event_main();
return;
}
如果您在 #include
指令中指定 cspi/spi.h
,则在 -I
开关中不需要 cspi
。
改为:
-I/usr/include/at-spi-1.0/