欢迎来到Java学习网!
设为首页 | 加入收藏
当前位置: 首页 > 编程开发 > C++语言 >

JAVA如何调用dll,前面已经讲过,这里就不再叙述了。这里主要说一下c++如何调用dll:

首先,有个Hello.dll,里面有两个方法:
void print(){
printf("Hello world!this is print methos\n");
}


JNIEXPORT void JNICALL Java_Hello_sayHello(JNIEnv *, jobject){
printf("Hello world!\n");
return ;
}

 


我们需要在Test.cpp里调用Java_Hello_sayHello这个方法:

第一步:我们需要一个工具,来查看dll的入口函数,这个工具是Dependency Walker

第二步:用这个工具打开Hello.dll(见附件dll.jpg):

第三步:Test.cpp实现调用Hello.dll
#include <iostream>
#include <jni.h>
#include "Hello.h"
#include "windows.h"
#include "stdafx.h"

typedef void(__stdcall *Print_)();

int main(){

HINSTANCE hDll; //DLL句柄
Print_ print_; //函数指针
hDll = LoadLibrary("Hello.dll");

if (hDll != NULL)
{

print_ = (Print_)GetProcAddress(hDll,"Java_Hello_sayHello@8");
if(print_!=NULL)
{

print_();
}
FreeLibrary(hDll);
}
return 0;

}

 


这样,就完成c++调用dll文件。如果java想通过jni调用Test.cpp(Test.dll),在Test.cpp里按照jni标准格式再封装一下即可

    相关教程
    推荐内容