C++調用dll庫

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標準格式再封裝一下即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章