pjsip windows下 java的使用

编译

1,用 vs打开
2,创建一个空的 config_site.h 文件
你可以尝试着
3,编译pjsua项目
4,编译swig_java-pjsua2项目

参考:https://docs.pjsip.org/en/latest/pjsua2/building.html#building-java-swig-module
其实我感觉没必要安装swig

java版本说明

咱们编译的pjsua2.dll 可以有32位和64位的区别。
那么调用的时候也要注意java 32位和64位的区别。

当生成jar包之后,使用

"D:\Program Files\Java\jdk1.8.0_291\bin\java.exe" -jar .//test1.jar
"D:\Program Files (x86)\Java\jdk-1.8\bin\java.exe" -jar .//test1.jar

那么test1.jar 所依赖的dll版本是不一样的。

再我看来 java程序没有32位还是64位的区别。使用哪个版本的 java.exe 调用,就算是哪个版本的程序。

dll 路径

static {
        System.out.println("java.library.path:"+System.getProperty("java.library.path"));
        String path1 = System.getProperty("java.library.path");
        String path2 = System.getProperty("user.dir");
        System.out.println("user.dir:"+path2);

        //系统 Windows 或者 Linux
        String osName = System.getProperties().getProperty("os.name").toLowerCase();
        //架构 x86 或者 amd64
        String osArch = System.getProperties().getProperty("os.arch").toLowerCase();
        System.out.println("This OS is: " + osName + ";" + osArch);
        String dllFileName = "unknown.dll";
        if (osArch.indexOf("64") != -1){
            if (osName.indexOf("win") != -1){
                dllFileName = "pjsua2.dll";
            }
            else {
                dllFileName = "unknown.dll";
            }
        }else if (osArch.indexOf("86") != -1){
            if (osName.indexOf("win") != -1){
                dllFileName = "pjsua2_x86.dll";
            }else{
                dllFileName = "unknown.dll";
            }
        }else {
            dllFileName = "unknown.dll";
        }
        String dllFilePath = System.getProperty("user.dir") + File.separator + dllFileName;
        System.out.println("dll file path:" + dllFilePath);
//        System.load("E:/testPjsipJava/javaDemo/test1/libs/pjsua2.dll");
        System.load(dllFilePath);
        System.out.println("Library loaded");
    }

也不知道他们加载 dll 使用

  System.loadLibrary("pjsua2");

是怎么成功的,也许他们使用了idea的环境变量

生成jar文件

把java项目打包成jar包
只会将java相关的文件包含进去,自己的dll还是被放在外面

jar转成exe

用exe4j把jar包加工成exe文件,目前还没发现什么别的方法
参考

参考

总结

java 生成的jar包,所依赖的dll版本(32位还是64位),跟java.exe的版本有关系。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值