java調用c的dll
Ⅰ 現在我有一個DLL文件,我想在java中調用DLL文件中的方法,請問如何實現
一般那種c#的dll是java不能直接調用的,但C\C++可以,你可以使用JNI。比如你要一個 public native void sengMsg(String msg); 來發送信息,先用native關鍵字聲明這個函數,然後再類裡面加一個靜態塊: static { System.loadLibrary("msg"); } 這里的msg是你的後來編譯的dll文件名,不是簡訊貓帶的。 然後寫其他的函數就可以調用這個方法了,寫完後用javac編譯,得到class文件,然後用 javah -jni 你的class文件 就會得到一個.h的頭文件,用visual studio新建一個dll,把那個.h文件包含進去,用C\C++調用你現有的dll,然後編譯得到你的msg.dll,把它復制到你的class文件目錄,然後就可以調試運行了。
Ⅱ Java調用c程序,這么簡單
1、編寫Java代碼Hello.java
2、編譯Java文件
在命令行窗口輸入以下命令進行編譯:
3、根據頭文件編寫cpp文件
注意:先刪除h文件中的ifndef、endif、define和注釋,然後編寫自己的函數代碼。
4、安裝C/C++編譯器
此處不進行演示。
5、編譯生成hello.dll文件
找到jdk文件夾下的include文件夾下的jni.h,路徑為D:\Java1.8\include。進入win32文件夾,找到jni_md.h文件,路徑為D:\Java1.8\include\win32。使用以下命令行代碼編譯生成hello.dll:
6、編寫測試代碼
在Hello.java中添載入入hello.dll文件的代碼。
編寫測試代碼:如果需要使用C中的帶參數的函數,可以嘗試以下步驟:
1、創建類,定義native方法
2、編譯Java文件
輸入cmd進入命令行窗口,輸入以下命令進行編譯:
3、編寫cpp文件
4、編譯生成dll文件
5、編寫測試代碼
在Hello.java中添載入入hello.dll文件的代碼。
編寫測試代碼,然後運行。
Ⅲ 用Java怎麼調用C語言已經編寫好的DLL
1.用System.getProperty("user.dir"),獲取程序的路徑,估計你的應該是 E:\\測試程序不清楚列印一下就可以了。System.getProperty("user.dir") + "\\DLL\\CardAPI"2.unsigned char 用char就可以了unsigned int 用int就可以了,java的int值很大.....C的無符號的記得是65535 unsigned char*、和unsigned int* 這兩個是指針,第一個是取1位地址內容的,第二個根據系統而定,一般是取4位地址值的,用java 的String對應,應該可以 。
Ⅳ java怎麼引用c
Java調用C語言程序時,主要是涉及到操作系統底層的事件。這種時間Java無法處理,例如用戶上傳一個視頻文件,需要後台給視頻加上水印,或者後台分離視頻流和音頻流。只能通過調用C語言處理。
使用Java如何去調用C語言的介面呢?使用Java的JNI技術。
具體調用步驟如下:
1.首先創建Java文件 HelloJni.java ,並創建native方法。
2.編譯Java文件並生成java頭文件。
3.創建C語言文件,HelloWorld.c。
4.生成動態鏈接庫文件 libhello.so。
5.設置動態鏈接庫文件的目錄。
6.把剛才生成的so文件拷貝到/home/lib下,然後執行class文件。
Ⅳ 如何用Java調用c++生成的dll文件
1
首先要安裝好Visual Studio 2010 (其他版本也行)以及JDK(別忘了配置環境變數),然後安裝Eclipse。以上軟體安裝可自行網路,有很多資料。
2
進入正題,首先在Eclipse中新建工程,File->New->Java Project
3
然後右擊DllTest,New->package,再右擊src目錄下的com包,New->Class。這樣我們的Java項目就建好了。
4
再
建好的類文件Dlltest.java里添加代碼。主要是導入dll文件的loadlibrary函數和要調用的函數聲明shanfei。代碼詳
見 http://blog.csdn.net/lovesummerforever/article/details/25827199
END
編譯Java工程並生成VC要用到的頭文件
1
現
在打開cmd,先進到當前java文件所在的目錄,用cd xxx\xxx
命令即可,返回上一級目錄用cd..命令(注意後面的倆點)。到當前目錄,也就是com文件夾下,輸入javac Dlltest.java
指令編譯java文件生成Dlltest.class文件,就在com文件夾下。
2
之
後再回到上級目錄,就是com文件夾的上一層src目錄(cd..命令),執行javah命令生成頭文件(頭文件DllTest.h就在com的上層文件
夾src中),此處一定注意執行javah命令(javah -classpath . -jni
com.DllTest,注意點兩邊的空格)的目錄,目錄錯誤就會報錯(如上圖所示)。
END
建立VC++工程,生成dll文件
1
打開Visual Studio 2010,新建項目,選擇win32項目
2
下一步,選擇,dll項目,勾選空項目,點擊完成,一個空的dll項目就建好了。
3
還記得之前java項目中生成的DllTest.h文件嗎?它就是Java為C++項目指定的頭文件,java生成頭文件,c++里只需要將頭文件里聲明的函數實現就好了。首先把頭文件復制到C++項目的目錄下並導入到解決方案的頭文件目錄下。
4
新建一個cpp文件,文件名最好與頭文件一致(不一樣也可以),在這個cpp文件中我們要實現頭文件中的函數,需要注意的是函數頭必須跟DllTest.h中的一樣,不能出錯。加完代碼,會發現包含的頭文件jni.h和jni_md.h出錯了,下一步就來解決它。
5
這
個cpp文件中需要包含兩個java安裝目錄下的頭文件:jni.h和jni_md.h,分別位於java安裝目錄下的include文件夾和
include里的win32文件夾內。找到這兩個文件,復制到Visual Studio VC 2010
的頭文件包含目錄中(我的是MicroSoft Visual Studio
10.0\VC\Include,如圖)。當然也可以把頭文件之直接復制到當前項目的目錄下(記得把代碼改為#include
「jni.h」),但是這樣每次新建項目都得復制粘貼。
6
復制完之後頭文件如果還報錯,就檢查一下VS的包含目錄,確認你把頭文件復制到VS的默認包含目錄中。屬性管理器->Debug->User->通用屬性->VC++目錄->包含目錄(include),添加剛才放置頭文件的目錄即可。
7
解決了上述問題,就可以嘗試編譯項目生成dll文件了,在debug或release模式下點擊生成解決方案,生成成功後到項目目錄的debug或release目錄下找到相應的dll文件。
END
在Java中調用c++生成的dll文件
1
生成了dll文件,終於到了最後一步。把生成的dll文件復制到Java項目的目錄下,注意不是放在com文件夾,也不是src文件夾,是DllTest文件夾內,跟src同級,否則會報錯。
2
還有一點需要注意的是,在Java文件內用LoadLibrary函數調用的庫名必須與Dll文件名一致,而不是跟java類名一致,這點可以參考java 部分的代碼。確認完上述問題,點擊運行,稍等片刻就可以看到運行結果,java&dll之旅到此結束。