-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
c在線編譯器(codeorg編程網(wǎng)站)
大家好!今天讓創(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
本文目錄:
一、如何用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。
2、在test.cpp文件中,輸入C語(yǔ)言代碼:printf("test system cls");system("cls");。
3、編譯器運(yùn)行test.cpp文件,此時(shí)成功通過(guò)system("cls") 進(jìn)行了輸出內(nèi)容的清屏。
以上就是關(guān)于c在線編譯器相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
皇藝景觀設(shè)計(jì)(皇藝設(shè)計(jì)學(xué)院)
寧波住宅景觀設(shè)計(jì)公司(寧波住宅景觀設(shè)計(jì)公司有哪些)
猜你喜歡
哪個(gè)瀏覽器可以直接上油管(如何正規(guī)訪問(wèn)國(guó)外網(wǎng)站)
gdp的英語(yǔ)全稱是什么(gdp的英語(yǔ)全稱是什么)
日本鬼子是中國(guó)人嗎(日本鬼子是中國(guó)人嗎)
wechat不滿90天如何改綁手機(jī)號(hào)(微信不滿15天如何更名)
看懂趨勢(shì)抓住商機(jī)(看懂趨勢(shì)抓住商機(jī)的句子)
r語(yǔ)言讀不了csv文件(r語(yǔ)言讀取csv文件為什么報(bào)錯(cuò))
國(guó)內(nèi)臉書(shū)怎么登錄不了(國(guó)內(nèi)臉書(shū)怎么登錄不了國(guó)外賬號(hào))