本文目錄一覽:
能在網上在線編譯C語言,並編譯呈現出來的網站是什麼?
Ideone
Ideone()是一個在線多語言編程執行器工具,可以在線直接做編譯和執行動作,支持包括C++,Java,JavaScript,Perl,PHP,Python和Ruby在內的40多種編程語言.Ideone是一個簡易的編程測試工具,雖然不能替代專業版的工具,但是其功能非常全面.,該頁面上有不少廣告,看的有點不爽.
望採納~
有問題歡迎繼續追問
C語言怎麼編譯呀?
在本機上搭建IDE開發環境,在IDE中導入編譯器,就可以本地編譯了。
把代碼在本地寫好,編譯過之後,運行樣例沒問題後,再上傳的網站上,網站上是有編譯器的,你選擇之後會自動編譯。
如何用java調用c語言編譯器實現在線編譯c語
要在java中調用c語言的庫,需要使用Java提供了JNI。
舉例說明
在c語言中定義一個 void sayHello()函數(打印Hello World);然後在Java中調用這個函數顯示Hello Word.
現在分別從Java和C語言兩部分說明:
1. Java 部分
首先定義一個HelloNative,在其中申明sayHello函數,函數要申明為Native 類型的.如下:
public class HelloNative {
public native void sayHello();
}
編譯這個類,生成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
可以看一下上面自動生成的程序,程序include了jni.h,這個頭文件在 $JAVA_HOME下的include文件夾下. 還可以發現生成的函數名是在之前的函數名前面加上了Java_HelloNative。
2. C語言部分
根據上面生成的h文件編寫相應的代碼實現,建立一個 HelloNative.cpp用來實現顯示Hello World的函數.如下:
#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
這樣就會在當前目錄下生成一個libHelloNative.so的庫文件.這時需要的庫已經生成,在C語言下的工作已經完成了.
接下來需要在Java中編寫一個程序測試一下.在程序前,需要將我們的庫載入進去.載入的方法是調用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();
}
}
但是再編譯後,運行的時候,問題又出現了.
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)
載入庫失敗,但是庫明明就是放在當前文件夾下的,怎麼會載入失敗呢?
用System.getProperty(“java.library.path”)查看,發現java.library.path中並不u存在當前的目錄.主要有以下的幾個解決辦法:
1) 將生成的庫複製到java.library.path有的路徑中去,當然這樣不是很好
2) 設置環境變量export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ,將當前的目錄加入到LD_LIBRARY_PATH中
3) 設置java 的選項,將當前的目錄加入到其中 .java -Djava.library.path=. $LD_LIBRARY_PATH
這樣之後程序就能夠成功的運行了.可以看見顯示的”Hello World!”了
c語言在線編譯
問題很多
第一:函數申明問題,max(x,y);應該放在main() 上面,不然會報 沒定義max()錯誤
第二:函數返回值問題.max()是一個有返回值的函數,在max()前面應該加 返回值類型的條件
第三:文件包含問題.printf 用到了 stdio.h
還有些小細節問題…就不說
具體修改如下:
#include stdio.h
int max(int x,int y)
{
int z;
z=(xy)?x:y;
return z;
}
void main(void)
{
int a,b,c;
scanf(“%d%d”,a,b);
c=max(a,b);
printf(“max=%d\n”,c);
}
C語言如何編譯
先創建一個工程,選擇win32的吧,然後一直下一步直到完成
然後在左邊找到你創建的一個和你工程名字一樣的文件打開,如果沒錯的話裡面應該是一個main函數示例,把它刪,把你的代碼粘貼到這個文件,按F5會提示編譯,確定後開始編譯,如果編譯沒問題會在編譯完成後運行(調試態)
娟豬下班了沒有
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/230389.html