HOME 首頁(yè)
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營(yíng)
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    c在線編譯器(codeorg編程網(wǎng)站)

    發(fā)布時(shí)間:2023-03-13 01:53:56     稿源: 創(chuàng)意嶺    閱讀: 116        問(wèn)大家

    大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于c在線編譯器的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。

    ChatGPT國(guó)內(nèi)免費(fèi)在線使用,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫(xiě)出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端

    官網(wǎng):https://ai.de1919.com

    本文目錄:

    c在線編譯器(codeorg編程網(wǎng)站)

    一、如何用java調(diào)用c語(yǔ)言編譯器實(shí)現(xiàn)在線編譯c語(yǔ)

    要在java中調(diào)用c語(yǔ)言的庫(kù),需要使用Java提供了JNI。

    舉例說(shuō)明

    在c語(yǔ)言中定義一個(gè) void sayHello()函數(shù)(打印Hello World);然后在Java中調(diào)用這個(gè)函數(shù)顯示Hello Word.

    現(xiàn)在分別從Java和C語(yǔ)言兩部分說(shuō)明:

    1. Java 部分

    首先定義一個(gè)HelloNative,在其中申明sayHello函數(shù),函數(shù)要申明為Native 類型的.如下:

    public class HelloNative {

    public native void sayHello();

    }

    編譯這個(gè)類,生成class文件:

    javac HelloWorld.java

    利用javah生成需要的h文件

    javah HelloNative

    生成的 h文件大概如下:

    /* DO NOT EDIT THIS FILE - it is machine generated */

    #include <jni.h>

    /* Header for class HelloNative */

    #ifndef _Included_HelloNative

    #define _Included_HelloNative

    #ifdef __cplusplus

    extern "C" {

    #endif

    /*

    * Class: HelloNative

    * Method: sayHello

    * Signature: ()V

    */

    JNIEXPORT void JNICALL Java_HelloNative_sayHello

    (JNIEnv *, jobject);

    #ifdef __cplusplus

    }

    #endif

    #endif

    可以看一下上面自動(dòng)生成的程序,程序include了jni.h,這個(gè)頭文件在 $JAVA_HOME下的include文件夾下. 還可以發(fā)現(xiàn)生成的函數(shù)名是在之前的函數(shù)名前面加上了Java_HelloNative。

    2. C語(yǔ)言部分

    根據(jù)上面生成的h文件編寫(xiě)相應(yīng)的代碼實(shí)現(xiàn),建立一個(gè) HelloNative.cpp用來(lái)實(shí)現(xiàn)顯示Hello World的函數(shù).如下:

    #include <stdio.h>

    #include "HelloNative.h"

    JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *, jobject)

    {

    printf("Hello World!\n");

    }

    代碼編寫(xiě)完成之后,我們?cè)儆胓cc編譯成庫(kù)文件,命令如下;

    gcc -fPIC -I/usr/lib/jvm/java-7-openjdk-i386/include -I/usr/lib/jvm/java-7-openjdk-i386/include/linux -shared -o libHelloNative.so HelloNative.cpp

    這樣就會(huì)在當(dāng)前目錄下生成一個(gè)libHelloNative.so的庫(kù)文件.這時(shí)需要的庫(kù)已經(jīng)生成,在C語(yǔ)言下的工作已經(jīng)完成了.

    接下來(lái)需要在Java中編寫(xiě)一個(gè)程序測(cè)試一下.在程序前,需要將我們的庫(kù)載入進(jìn)去.載入的方法是調(diào)用Java的 System.loadLibrary("HelloNative");

    public class TestNative

    {

    static {

    try {

    System.loadLibrary("HelloNative");

    }

    catch(UnsatisfiedLinkError e) {

    System.out.println( "Cannot load hello library:\n " + e.toString() );

    }

    }

    public static void main(String[] args) {

    HelloNative test = new HelloNative();

    test.sayHello();

    }

    }

    但是再編譯后,運(yùn)行的時(shí)候,問(wèn)題又出現(xiàn)了.

    Cannot load hello library:

    java.lang.UnsatisfiedLinkError: no HelloNative in java.library.path

    Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloNative.sayHello()V

    at HelloNative.sayHello(Native Method)

    at TestNative.main(TestNative.java:13)

    載入庫(kù)失敗,但是庫(kù)明明就是放在當(dāng)前文件夾下的,怎么會(huì)載入失敗呢?

    用System.getProperty("java.library.path")查看,發(fā)現(xiàn)java.library.path中并不u存在當(dāng)前的目錄.主要有以下的幾個(gè)解決辦法:

    1) 將生成的庫(kù)復(fù)制到j(luò)ava.library.path有的路徑中去,當(dāng)然這樣不是很好

    2) 設(shè)置環(huán)境變量export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ,將當(dāng)前的目錄加入到LD_LIBRARY_PATH中

    3) 設(shè)置java 的選項(xiàng),將當(dāng)前的目錄加入到其中 .java -Djava.library.path=. $LD_LIBRARY_PATH

    這樣之后程序就能夠成功的運(yùn)行了.可以看見(jiàn)顯示的"Hello World!"了

    二、在線C語(yǔ)言編譯器

    雖然這種東西可以做出來(lái),但是也太無(wú)聊了。。自己下個(gè)VC還好

    三、(c在線編譯器)用jsp做一個(gè)網(wǎng)站,能提取用戶在文本域中輸入的文字(其實(shí)就是c代碼)

    不是request.getParameter()么?

    四、在C語(yǔ)言中system("cls") 怎么用?

    需要準(zhǔn)備的材料分別有:電腦、C語(yǔ)言編譯器。

    1、首先,打開(kāi)C語(yǔ)言編譯器,新建一個(gè)初始.cpp文件,例如:test.cpp。

    c在線編譯器(codeorg編程網(wǎng)站)

    2、在test.cpp文件中,輸入C語(yǔ)言代碼:printf("test system cls");system("cls");。

    c在線編譯器(codeorg編程網(wǎng)站)

    3、編譯器運(yùn)行test.cpp文件,此時(shí)成功通過(guò)system("cls") 進(jìn)行了輸出內(nèi)容的清屏。

    c在線編譯器(codeorg編程網(wǎng)站)

    以上就是關(guān)于c在線編譯器相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。


    推薦閱讀:

    c在線編譯器(codeorg編程網(wǎng)站)

    皇藝景觀設(shè)計(jì)(皇藝設(shè)計(jì)學(xué)院)

    寧波住宅景觀設(shè)計(jì)公司(寧波住宅景觀設(shè)計(jì)公司有哪些)