关于jni调用c++动态类库的问题

来源:百度知道 编辑:UC知道 时间:2024/06/10 01:23:35
我有一些dll,里面的cpp函数都是很普通的,他们的方法名没有像jni要求的这样:JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
()格式,现在问题出来了,这个类库我可不可以直接用jni调用还是必须按照jni要求的重写?怎么掉用?
分实在是不多了,望不吝赐教!
谢谢!
但是我的dll是别人早就写好的,只能直接使用,连代码都看不到,更别说重写了,还有别的办法吗?

强烈建议使用JNI接口的形式来重写动态库,你首先需要先写一个java接口的类,并生成头文件,再用C++的开发工具(如VC6)建立一个DLL工程,将前面生成的头文件包含到工程中(通常需要将头文件拷贝到工程目录下,以防止头文件丢失),再根据头文件中的接口,用C++实现其中的功能即可。其中主要是涉及到了一些数据的转换问题,你可以在网上搜一下即可,其它的操作跟编写常规的C++函数无区别。

这个类库当然不能直接用jni调用。不过在JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld 函数中调用。
JNIEXPORT void JNICALL Java_HelloWorld
(JNIEnv * env, jobject object)
{
//函数体类可以调用任意C/C++函数
printf("HelloWorld\n");

}