我正在尝试编译一个调用c ++函数的java类。我正在使用Ubuntu和gcc编译器。 以下是文件:---->
JAVA CLASS
public class JNIVips {
static {
System.loadLibrary("JNIVips"); // JNIVips.dll (Windows) or libJNIVips.so (Unixes) }
// Native method declaration
private native void callMain(String[] argv);
// Test Driver
public static void main(String[] args) {
new JNIVips().callMain(args); // Invoke native method
}
}
C ++文件看起来像这样===>
#include "JNIVipsImpl.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vips/vips>
#include <vips/vips.h>
void callMain (char **argv)
{.........}
JNIVipsCpp.c
#include <jni.h>
#include "JNIVipsImpl.h"
#include "JNIVips.h"
JNIEXPORT void JNICALL Java_JNIVips_callMain(JNIEnv *env, jobject thisObj, jobjectArray argv )
{
return callMain();
}
JNIVipsImpl.h ==&GT;
#ifndef _JNI_VIPS_IMPL_H
#define _JNI_VIPS_IMPL_H
#ifdef __cplusplus
extern "C" {
#endif
void callMain();
#ifdef __cplusplus
}
#endif
#endif
我在终端中使用以下命令来编译代码。一个接一个。
1)javac JNIVips.java
2)javah JNIVips
3)g++ -c -I"/usr/local/java/jdk1.7.0_60/include" -I"/usr/local/java/jdk1.7.0_60/include /linux" -Wall JNIVipsImpl.cc 'pkg-config vipsCC --cflags --libs'
4)g++ -shared -fPIC -I"/usr/local/java/jdk1.7.0_60/include" -I"/usr/local/java/jdk1.7.0_60/include/linux" -o libJNIVips.so -shared -Wl,-soname,libJNIVips.so 'pkg-config vipsCC --cflags --libs'
我收到以下错误
Error: Could not find or load main class JNIVips]