<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    J2EE 學(xué)習(xí)

    java struts1、struts2 spring hibernate freemarker ajax fckeditor Mysql MSSQL ORACLE DB2 Websphere jboss
    隨筆 - 11, 文章 - 13, 評論 - 2, 引用 - 0
    數(shù)據(jù)加載中……

    [JNI] Eclipse直接完成JAVA調(diào)用C/C++ (Eclipse上使用CDT結(jié)合MinGW)


    看到其他人的在eclipse上調(diào)用C/C++ ,這個(gè)方法不錯(cuò),所以摘錄了這個(gè)人的方法:
        

    網(wǎng)上都有很多在windows平臺下JAVA調(diào)用C/C++方法的介紹說明。但是,在此過程中,絕大多數(shù)都是利用VC等其他工具來進(jìn)行DLL的生成。試想一下,在eclipse平臺開發(fā)了JAVA,突然又要打開VC的工作環(huán)境,多不爽!何況如果內(nèi)存不夠的話,還得先把其中一個(gè)退出。到需要再重新打開,多費(fèi)勁?。?!現(xiàn)在,我們讓這一系列的工作都在eclipse上完成!

     

    首先、安裝eclipse3.2。

    這個(gè)安裝過程我就不在這里介紹了,大家都懂。

     

    第二、安裝MinGW。

    1.用戶可以直接登陸以下地址下載MinGW http://prdownloads.sourceforge.net/mingw/MinGW-5.0.3.exe

    2. 鼠標(biāo)雙擊執(zhí)行安裝文件,選擇“Download and Install”,下一步

    3.選擇軟件安裝的版本,這里我們選擇“Candidate”,下一步

    4.選擇安裝的編譯器

       1) g++ compiler

       2) g77 compiler

       3) Objective C Compiler

       4) MinGW Make

       下一步

    5. 選擇安裝路徑,下一步

       這里用默認(rèn)路徑C:\MinGW

    6.  等待下載軟件版本及安裝。安裝會自動(dòng)完成,但是你要保證你的網(wǎng)絡(luò)是可用的。

     

    第三、MinGW的環(huán)境變量設(shè)置

    1. 系統(tǒng)變量里面的Path添加“MinGW安裝目錄\bin;(例如;C:\MinGW\bin;)

    2. 系統(tǒng)變量里添加 C_INCLUDE_PATH,值為:C:\MinGW\include

    3. 系統(tǒng)變量里添加 CPLUS_INCLUDE_PATH,值為:C:\MinGW\include\c++\3.4.2;C:\MinGW\include\c++\3.4.2\mingw32;C:\MinGW\include\c++\3.4.2\backward;C:\MinGW\include     (這里要注意你的版本號哦)

     

    第四、做一個(gè)小技巧修改

       先將MinGW安裝目錄\bin底下的 mingw32-make.exe復(fù)制一份副本,將副本更名為make.exe (因?yàn)閑clipse默認(rèn)用了make,不是mingw32-make,當(dāng)然,你也可以修改eclipse的設(shè)定,自己喜歡吧)。

     

    第五、安裝CDT插件。

    1、 Eclipse的網(wǎng)站上面找到CDT插件的壓縮包,然后下載至電腦硬盤上;

       下載地址:(http://www.eclipse.org/cdt/downloads.php )

    2、就像你安裝其他安裝插件一下的方式安裝CDT插件吧。怎么安裝不是關(guān)鍵問題,按你喜歡,能用就可以了。

     

    第六、簡單介紹CDT的使用吧。

    1.  新建一個(gè)C++項(xiàng)目 點(diǎn)擊菜單欄上的 File / New / Standard Make C++ Project

       如果想建立一個(gè)C項(xiàng)目則選擇Standard Make C Project;

    2.  輸入New Project名字,直接按Finish完成Project添加

    3. 給項(xiàng)目新建一個(gè)的源文件,點(diǎn)擊菜單欄上的 File / New / File

    4. 接著出現(xiàn)文件添加的窗口,在File Name欄里面寫上文件名

      C++的源文件后綴名為cpp hello.cpp

       C的源文件后綴名為c hello.c

    5.

    編輯剛剛添加的hello.cpp 文件,添加一段C++的代碼,內(nèi)容如下:

    #include <iostream>
    using namespace std;  
      
    int main()  
    {  
        cout
    <<"hello world!!\n";  
        
    return 1;
    }
     

    若你新建的項(xiàng)目為C的話,則需添加相應(yīng)的C代碼,內(nèi)容如下:

    #include "stdio.h"
    int main(){
       printf(
    "Hello world!\n");
       
    return 1;
    }

    添加一個(gè)編譯命令

    Target Name:MAKE FILE

    Builder Command:g++ hello.cpp -g -o run

    這里如果是c環(huán)境就改成gcc hello.c -g -o run

    雙擊MAKE FILE,此時(shí)Eclipse在項(xiàng)目文件的根目錄創(chuàng)建一個(gè)run.exe的文件,此文件根據(jù)hello.cpp代碼編譯生成。

    雙擊run.exe可以預(yù)覽效果,控制臺輸出結(jié)果:Hello world!

    第七、讓我們開始進(jìn)入真正的工作吧!

    The Java side

    1.建立Java工程JavaHello,編寫java

    // Hello.class ,這里主要包名,因?yàn)楹竺娴暮瘮?shù)命名同包名也有聯(lián)系的。

    package test;
    class Hello
    {
        
    public native void sayHello();
        
    static
        
    {
            System.loadLibrary(
    "hello");
        }

        
    public static void main(String[] args)
        
    {
            Hello h 
    = new Hello();
            h.sayHello();
        }

    }

     

    2.用命令生成頭文件

    bin目錄下建立批處理文件,名稱隨意,用bat作為擴(kuò)展名就行了。這里命名為run.bat

    內(nèi)容為:

    set java_home=F:\dev-software\dev-soft\jdk\jdk1.5.0
    set path
    =%java_home%\bin
    set class_path
    =%java_home%\lib;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar
    javah 
    -jni test.Hello
    @pause

    保存,執(zhí)行(可以雙擊執(zhí)行,也可在eclipse的“Run As”調(diào)用bat批處理文件來執(zhí)行),則在bin目錄下生成test_Hello.h 文件。內(nèi)容為:

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include 
    <jni.h>
    /* Header for class test_Hello */

    #ifndef _Included_test_Hello
    #define _Included_test_Hello
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     test_Hello
     * Method:    sayHello
     * Signature: ()V
     
    */

    JNIEXPORT 
    void JNICALL Java_test_Hello_sayHello
      (JNIEnv 
    *, jobject);

    #ifdef __cplusplus
    }

    #endif
    #endif

    The C sideCompiling the Library

    1.建立標(biāo)準(zhǔn)C工程Cpro,并生成dll文件

    1 將生成的頭文件test_Hello.h拷貝到C工程Cpro

    2 編寫CHello.c,內(nèi)容為:

    #include <jni.h>
    #include 
    "test_Hello.h"
    #include 
    <stdio.h>
    JNIEXPORT 
    void JNICALL Java_test_Hello_sayHello
    (JNIEnv 
    *env, jobject obj)
    {
    printf(
    "Hello world !\n");
    return;
    }

    3 C工程Cpro下建立hello.def文件(用于定義導(dǎo)出的函數(shù)),內(nèi)容為:

    EXPORTS
    Java_test_Hello_sayHello

    4)在C工程Cpro下建立makefile文件,內(nèi)容為:

    step1:
        gcc 
    --I"F:\dev-software\dev-soft\jdk\jdk1.5.0\include" -I"F:\dev-software\dev-soft\jdk\jdk1.5.0\include\win32" -o hello.o Hello.c
    step2:
        gcc 
    -shared -o hello.dll hello.o hello.def

    5) Make Targets視圖下,為Cpro工程添加兩個(gè)Make Target(對應(yīng)makefile文件的內(nèi)容),如下圖:

    6 Make Targets視圖下雙擊step1,在C工程Cpro生成hello.o 文件。

    7)  Make Targets視圖下雙擊step1,在C工程Cpro生成hello.dll 文件。

    JAVA調(diào)用DLL

    1.  hello.dll拷貝到Java工程JavaHello下。

    2.  運(yùn)行Hello.java,則可以看到輸出結(jié)果:

    Hello world!

     

    注:如果上面不是C工程而是是C++工程

    1 Hello.c改為Hello.cpp

    2 makefile內(nèi)容改為:

     

    step1:
        g
    ++  --I"F:\dev-software\dev-soft\jdk\jdk1.5.0\include" -I"F:\dev-software\dev-soft\jdk\jdk1.5.0\include\win32" -o hello.o Hello.cpp
        
    step2:
        g
    ++ -shared -o hello.dll hello.o hello.def
    3) 其他的幾乎都不用改變也可以。

    posted on 2008-12-19 11:38 李峰 閱讀(291) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 永久免费av无码网站大全| 国产精品免费久久久久久久久 | 99在线观看视频免费| 中文字幕日本人妻久久久免费| 在线视频网址免费播放| 久久www免费人成精品香蕉| 九九九精品视频免费| 亚洲精品视频免费观看| 成年免费a级毛片免费看无码| aa级女人大片喷水视频免费| 三上悠亚在线观看免费| 男女一边桶一边摸一边脱视频免费 | 亚洲人成电影福利在线播放| 午夜亚洲www湿好大| 亚洲欧洲高清有无| 国产精品高清视亚洲一区二区| 亚洲成a人片在线观看天堂无码| 综合偷自拍亚洲乱中文字幕| jizz在线免费播放| 国产一级片免费看| 歪歪漫画在线观看官网免费阅读 | 歪歪漫画在线观看官网免费阅读| 免费看无码自慰一区二区| 国产免费资源高清小视频在线观看| 免费人成视频在线观看不卡| 亚洲综合国产精品第一页| 亚洲gv猛男gv无码男同短文| 亚洲天堂一区二区三区| 亚洲欧美日韩国产精品一区| 大片免费观看92在线视频线视频| 青柠影视在线观看免费高清| 免费国产作爱视频网站| 国产小视频在线观看免费| 亚洲色欲色欲www在线丝| 免费无码又爽又刺激网站| 无码人妻一区二区三区免费n鬼沢| 成人免费在线看片| 免费一区二区视频| 亚洲第一福利视频| 亚洲jizzjizz少妇| 成全在线观看免费观看大全 |