//HelloWorld.java
public class HelloWorld { public native void displayHelloWorld();
static {
System.out.println("run main");
System.setProperty("java.library.path", ".");
System.out.println("java.library.path="+System.getProperty("java.library.path"));
System.loadLibrary("hello");
}
public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}//HelloWorld.h[javah -jni HelloWorld生成应该也没问题]
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: displayHelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
(JNIEnv *, jobject);#ifdef __cplusplus
}
#endif
#endif//Hello.c
#include "jni.h"
#include "HelloWorld.h"JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *, jobject){
printf("HelloWorld !\n");
return;
}//生成libhello.so(生成在当前目录,jni.h,jni_md.h为了学习方便我放在一个目录下)
gcc -I. -shared hello.c -o libhello.so//设置环境变量: LD_LIBRARY_PATH
set LD_LIBRARY_PATH=.//运行 HelloWorld但就说我没导入库,可是我的.so文件和其他的文件都放在一个目录下,但是咳是不行,问大家帮助下,谢谢拉!
public class HelloWorld { public native void displayHelloWorld();
static {
System.out.println("run main");
System.setProperty("java.library.path", ".");
System.out.println("java.library.path="+System.getProperty("java.library.path"));
System.loadLibrary("hello");
}
public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}//HelloWorld.h[javah -jni HelloWorld生成应该也没问题]
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: displayHelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
(JNIEnv *, jobject);#ifdef __cplusplus
}
#endif
#endif//Hello.c
#include "jni.h"
#include "HelloWorld.h"JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *, jobject){
printf("HelloWorld !\n");
return;
}//生成libhello.so(生成在当前目录,jni.h,jni_md.h为了学习方便我放在一个目录下)
gcc -I. -shared hello.c -o libhello.so//设置环境变量: LD_LIBRARY_PATH
set LD_LIBRARY_PATH=.//运行 HelloWorld但就说我没导入库,可是我的.so文件和其他的文件都放在一个目录下,但是咳是不行,问大家帮助下,谢谢拉!
解决方案 »
- TYPE_SCROLL_SENSITIVE对upate更新,不支持???
- POI导出Excel图片问题
- 初学Hibernate,坎坷重重
- nutch搜索只显示搜索结果的条数,不显示搜索结果,
- java源代码反向生成uml类图
- struts2的action配置文件中返回结果可以使用通配符吗?
- java连接sql server的问题(有点急)
- 关于Hibernate ehcache二级缓存的问题(有点难度), 请帮忙, 谢谢!
- 求Struts文件上传下载
- 急!大们指点Applet中的安全问题
- dom4j 解析xml的问题
- 当用户从客户端输入注册信息后(输入Email),怎样实现对他的Email中发送一条注册成功的邮箱信息?
export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
表示把pwd的执行结果返回给LD_LIBRARY_PATH,并加在原LD_LIBRARY_PATH前面
pwd 是linux得到当前路径的命令(相当于dos下的cd)
a.JAVA JNI在linux下运行时会在LD_LIBRARY_PATH中搜索.so文件
b.如果你只要在当前目录下执行,只要简单地:LD_LIBRARY_PATH:=.
c.别忘了前面的export,因为linux的环境变量只对当前进程有效
d.我编的*.so文件放在什么地方都行,只要在LD_LIBRARY_PATH中加入.so的目录
我登SecureCRT上去试下