1. C++生成DLL文件
1.1创建工程
打开VC++编译器,然后选择Win32 Project ,然后选择工程位置和工程名称,然后点击下一步,再点击下一步 ,在应用程序类型 中选择DLL(D),然后点击完成 ,至此工程创建成功。
1.2编写函数
工程名字是test,在源文件文件夹中会有一个”test.app“文件,打开文件,在文件中写:
extern "C" __declspec(dllexport) int sum(int a,int b)
{
return a+b;
}
首先:extern "C" __declspec(dllexport) 这部分是固定的,然后是返回值类型 ,函数名称 ,参数列表,下面就是函数的具体实现。
1.3生成DLL
选择生成方式为”Debug“或者”Realse“,然后在Debug文件夹或者Realse文件夹中会找到相应的DLL文件。
1.4验证DLL
去网上下载个DLL函数查看器,然后打开生成的DLL文件,看是否你要的函数在里面。
2. Java中导入DLL文件
2.1下载地址:
JNative_1.4RC2_src.zip :http://jaist.dl.sourceforge.net/sourceforge/jnative/JNative_1.4RC2_src.zip
JNative_1.4RC2_src.zip是JNative源代码的压缩包把它解压后从中找到libJNativeCpp.so和JNativeCpp.dll两个文件.JNativeCpp.dll应用在Windows平台下.把它放在
JNative.jar :http://nchc.dl.sourceforge.net/sourceforge/jnative/JNative.jar
把JNative.jar加入到所需的工程中,把要调用的dll文件也放在c:\windows\system32目录下。
2.2测试函数
package com.xgz.jnative;
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
public class Test {
public static void main(String[] args)throws Exception {
/*系统加载dll文件有两种写法
1.loadLibrary方法:把dll文件拷贝到c:\windows\system32目录下,引用时只需写dll名字
2.load方法:写dll文件的完整路径
*/
System.loadLibrary("InterfaceFun");//InterfaceFun是dll文件
//参数说明InterfaceFun dll名,AddZhiYe函数名
JNative jnative = new JNative("InterfaceFun","AddZhiYe");
//设置此函数的返回值
jnative.setRetVal(Type.INT);
//赋予参数值
int i=0;
jnative.setParameter(i++, Type.INT,"1");
jnative.setParameter(i++, Type.INT,"2");
//函数执行
jnative.invoke();
//打印函数返回值
System.out.println(Integer.parseInt(jnative.getRetVal()));
}
}
2.3注意:
System.loadlibrary(""):
1) 和jre相关的一些目录
2)程序当前目录
3)Windows目录
4)系统目录(system32)
5)系统环境变量path指定目录