使用JNA實現Java對C的呼叫
jna coding
C
#include <stdio.h>
int add(int x, int y)
{
return x+y;
}
Java
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class JnaTest {
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary) Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"), CLibrary.class);
void printf(String format, Object... args);
}
public interface MyC extends Library {
int add(int x, int y);
}
public static void main(String[] args) {
CLibrary jnaLib = CLibrary.INSTANCE;
MyC myc = (MyC) Native.loadLibrary("myc", MyC.class);
jnaLib.printf("1+2=%d", myc.add(1, 2));
}
}
build C
mac os x
gcc -dynamiclib -o libmyc.dylib myc.c
export DYLD_LIBRARY_PATH=.
linux
gcc -Wall -fPIC -O2 -c -o libmyc.o myc.c
gcc -shared -o libmyc.so libmyc.o
export LD_LIBRARY_PATH=.
build & run java
jna_jar=/Users/erichan/.m2/repository/com/sun/jna/jna/4.2.2/jna-4.2.2.jar
javac -classpath $jna_jar JnaTest.java
java -classpath $jna_jar:. JnaTest
相關文章
- JNA--Java呼叫DLLJava
- 使用 Java實現mTLS呼叫JavaTLS
- java高階用法之:呼叫本地方法的利器JNAJava
- java高階用法之:在JNA中使用型別對映Java型別
- 利用JNA使Java訪問本地C++JavaC++
- C++庫封裝JNI介面——實現java呼叫c++C++封裝Java
- 使用emscripten實現js直接呼叫C程式碼(emscripten的初探)JSC程式
- JNA使用入門
- Java實現非同步呼叫Java非同步
- Android JNI實現Java與C/C++互相呼叫,以及so庫的生成和呼叫(JNI方式呼叫美圖秀秀so)AndroidJavaC++
- Music Studio專案心得--JNI實現C++呼叫JAVAC++Java
- 實現通過COM元件方式實現java呼叫C#寫的DLL檔案的完整demo元件JavaC#
- java 中對物件的呼叫Java物件
- C# 呼叫 C++ 生成的 dll 關鍵實現部分C#C++
- 利用swig實現python呼叫C/C++的方法PythonC++
- java高階用法之:JNA型別對映應該注意的問題Java型別
- c如何呼叫javaJava
- java高階用法之:JNA中的FunctionJavaFunction
- java高階用法之:JNA中的StructureJavaStruct
- 利用VB實現對IE的呼叫與控制 (轉)
- Android-Gallery[使用C# And Java實現]AndroidC#Java
- Android-Spinner [使用C# And Java實現]AndroidC#Java
- Android-Menu [使用C# And Java實現]AndroidC#Java
- C#實現攝像頭呼叫、拍照C#
- java高階用法之:JNA中的回撥Java
- java使用DES加密方式,實現對資料的加密解密Java加密解密
- 使用Boost對非值語義的C++類實現noncopyableC++
- C#使用委託實現函式回撥,方法呼叫攔截C#函式
- 教你如何用 Java 實現非同步呼叫Java非同步
- 在 C/C++ 中使用 TensorFlow 預訓練好的模型—— 間接呼叫 Python 實現C++模型Python
- 在 C/C++ 中使用 TensorFlow 預訓練好的模型—— 直接呼叫 C++ 介面實現C++模型
- python和C的如何實現互相呼叫?Python
- C# 實現 gRPC 服務和呼叫C#RPC
- java高階用法之:在JNA中將本地方法對映到JAVA程式碼中Java
- java高階用法之:JNA中的Memory和PointerJava
- android實現app通過jni呼叫C/C++方法AndroidAPPC++
- c#實現的破解程式--針對軟體使用時間限制C#
- java對過反射呼叫方法Java反射