java调用c库实例
java由于语言限制,不能使用char*作为返回值。 局部变量的字符串不能正常返回,vc可以正常接收,java不能接收。
c语言
int __stdcall GetCharacterCodeJn(char* outjson, int* outjson_len)
java语言
package softgranttest; import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException; import com.sun.jna.Library;
import com.sun.jna.Memory;
import com.sun.jna.Native;
import com.sun.jna.Pointer; public class Test { // 定义接口CLibrary,继承自com.sun.jna.Library
public interface testdll extends Library {
testdll Instance = (testdll) Native.loadLibrary("totfranjo" , testdll.class); int GetYellopCouCod(Pointer outjson_pointer,Pointer outjson_len_pointer); } public static void main(String[] args) throws IOException { Test_RRROOO(); } /**
* 特征码
*
* @throws UnsupportedEncodingException
*/
private static void Test_RRROOO() throws UnsupportedEncodingException
{ String strRet = ""; Pointer outjson_pointer = new Memory(1024);
Pointer outjson_len_pointer = new Memory(8); int nRet = testdll.Instance.GetYellopCouCod(outjson_pointer,outjson_len_pointer); int outjson_len = outjson_len_pointer.getInt(0);
byte[] bytOutjson = outjson_pointer.getByteArray(0, outjson_len); strRet = new String(bytOutjson, "gb2312"); System.out.println(strRet);
} }
java调用c库实例的更多相关文章
- Java调用动态库方法说明-最详细
Java不能直接调用由c或者c++写得dll(TF_ID.dll),所以只能采用jni得方法,一步一步生成符合规范得dll文件(假设叫FANGJIAN.dll),在FANGJIAN.dll这个文件里来 ...
- java调用c++库
c++ 写的库 jni封装一层 才可以给 java调用
- JAVA调用oracle存储过程实例
1.创建添加存储过程 CREATEORREPLACEPROCEDURE stu_proc(v_id INNUMBER, v_name INVARCHAR2, v_age INNUMBER) AS BE ...
- Linux平台Java调用so库-JNI使用例子
1.确保gcc编译器已安装 2.编写HelloJNI.java代码,用native声明需要用C实现的函数.如果源程序是包含在package里的话,应该建立同样的文件夹结构,比如/home/swan/t ...
- java调用dll库
1.dll叫动态链接库,作用是用某种语言封装好某些函数生成可供不同语言调用的.dll文件,通常是用C++编写生成,因为C++可以对很多硬件操作方便而其他高级语言不行 2.dll生成参考:http:// ...
- java 调用动态库打包sdk
java连接c++动态库并生成jar包提供给别人调用 1.需要将java通过jni生成头文件,并导入到c++项目并对c++进行jni方法继承 在项目的src目录执行,否则会提示 错误:找不到符号 ja ...
- java 调用c++程序实例
1.java程序: package com.zhangshitong; import java.io.File; public class Java2cpp { static{ System.load ...
- Java调用C/C++实现的DLL动态库——JNI
由于项目的需要,最近研究了java 调用DLL的方法,将如何调用的写于此,便于日后查阅: 采用的方法是JNI:Java Native Interface,简称JNI,是Java平台的一部分,可用于让J ...
- Linux系统上java调用C++ so库文件
PART1: java中使用jna替代jni调用c++/c生成的 dll/so库文件需要做的事项 1.引入JNA依赖或者直接下载JNAjar包 <!-- http ...
随机推荐
- iOS开发-Objective-C Block的实现方式
前言:我们可以把Block当作一个闭包函数,它可以访问外部变量和局部变量,但默认是不可以修改外部变量.你可以使用它来做回调方法,比起使用代理(Delegate)会更加直观.顺带一提,苹果很多的接口(A ...
- jquery checkbox选框操作
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- idea编辑区光标问题
本文转自:http://blog.csdn.net/shaoyezhangliwei/article/details/48735417 今天在用idea的情况下 ,莫名闪退了 ,重新打开的时候发现 光 ...
- Linux命令-终止进程命令:pkill
killall是杀死所有进程,而pkill是按照进程名称杀死进程,可以达到杀死所有进程的目的,因为linux里面同名的进程是分主进程和子进程的. pkill - httpd 按名称强制杀死httpd进 ...
- python学习笔记——多进程中的锁Lock
1 进程锁 python编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性. 每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一线程访问对象. 在python中我 ...
- ssh/scp 远程连接ssh非默认端口方法
ssh -p port <username>@<IP>
- Nginx 的线程池与性能剖析【转载】
正如我们所知,NGINX采用了异步.事件驱动的方法来处理连接.这种处理方式无需(像使用传统架构的服务器一样)为每个请求创建额外的专用进程或者线程,而是在一个工作进程中处理多个连接和请求.为此,NGIN ...
- git版本控制文件提交到composer应用市场,并下载用市场的软件库
要把github中的项目提交到composer中去,必须在github管理的项目中新建对应的composer.json文件, composer.json文件建立的方法 cmd定位到项目目录 compo ...
- 在为shader program pass uniform之前一定要先use program。
在为shader program pass uniform之前一定要先use program.
- [hihoCoder] #1096 : Divided Product
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Given two positive integers N and M, please divide N into sev ...