HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營
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        問大家

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

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

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

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

    本文目錄:

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

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

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

    舉例說明

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

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

    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語言部分

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

    #include <stdio.h>

    #include "HelloNative.h"

    JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *, jobject)

    {

    printf("Hello World!\n");

    }

    代碼編寫完成之后,我們再用gcc編譯成庫文件,命令如下;

    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的庫文件.這時(shí)需要的庫已經(jīng)生成,在C語言下的工作已經(jīng)完成了.

    接下來需要在Java中編寫一個(gè)程序測試一下.在程序前,需要將我們的庫載入進(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í)候,問題又出現(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)

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

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

    1) 將生成的庫復(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)行了.可以看見顯示的"Hello World!"了

    二、在線C語言編譯器

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

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

    不是request.getParameter()么?

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

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

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

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

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

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

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

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

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


    推薦閱讀:

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

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

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