好久没有写随笔了,前段时间参与的项目需要使用JAVA调用C++编写的算法库,现在也来分享一下简单的调用教程,Java调用dll/so库一般是有JNI、JNative、JNA。
由于JNI操作比较繁琐,而且也不需要C++调用JAVA的代码,便没有采用;JNative好久不更新了,现在只有32位的支持,于是采用了JNA。
使用VS生成DLL,简单的main示例:
main.cpp
#include "main.h"
int add(int a, intb){return a +b;
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{switch(fdwReason)
{caseDLL_PROCESS_ATTACH:
break;caseDLL_PROCESS_DETACH:
break;caseDLL_THREAD_ATTACH:
break;caseDLL_THREAD_DETACH:
break;
}return TRUE;
}
main.h
#ifndef __MAIN_H__#define __MAIN_H__ #include
#ifdef BUILD_DLL#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif //注意头文件一定是要把让外部调用的方法声明出去
#ifd