c在線編譯器-ag真人国际官网
① 求助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
/* 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
#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!"了
③ 適合win10系統的c語言編譯器
桌面操作系統
對於當前主流桌面操作系統而言,可使用 visualc 、gcc以及 llvm clang 這三大編譯器。
visual c (簡稱 msvc)只能用於 windows 操作系統;gcc 和 llvm clang除了可用於windows操作系統之外,主要用於 unix/linux操作系統。
像現在很多版本的 linux 都默認使用 gcc 作為c語言編譯器,而像 freebsd、macos 等系統默認使用 llvm clang 編譯器。由於當前 llvm 項目主要在 apple 的主推下發展的,所以在 macos中,clang 編譯器又被稱為 apple llvm 編譯器。
msvc 編譯器主要用於 windows 操作系統平台下的應用程序開發,它不開源。用戶可以使用 visual studio community 版本來免費使用它,但是如果要把通過 visual studio community 工具生成出來的應用進行商用,那麼就得好好閱讀一下微軟的許可證和說明書了。
而使用 gcc 與 clang 編譯器構建出來的應用一般沒有任何限制,程序員可以將應用程序隨意發布和進行商用。
msvc 編譯器對 c99 標準的支持就十分有限,加之它壓根不支持任何 c11 標准,所以本教程中設計 c11 的代碼例子不會針對 msvc 進行描述。所幸的是,visual studio community 2017 加入了對 clang 編譯器的支持,官方稱之為——clang with microsoft codegen,當前版本基於的是 clang 3.8。
也就是說,應用於 visual studio 集成開發環境中的 clang 編譯器前端可支持 clang 編譯器的所有語法特性,而後端生成的代碼則與 msvc 效果一樣,包括像 long 整數類型在 64 位編譯模式下長度仍然為 4 個位元組,所以各位使用的時候也需要注意。
為了方便描述,本教程後面涉及 visual studio 集成開發環境下的 clang 編譯器簡稱為 vs-clang 編譯器。
嵌入式系統
而在嵌入式系統方面,可用的c語言編譯器就非常豐富了,比如:
用於 keil 公司 51 系列單片機的 keil c51 編譯器;
當前大紅大紫的 arino 板搭載的開發套件,可用針對 avr 微控制器的 avrgcc 編譯器;
arm 自己出的 ads(arm development suite)、rvds(realview development suite)和當前最新的 ds-5 studio;
dsp 設計商 ti(texas instruments)的 ccs(code composer studio);
dsp 設計商 adi(analog devices,inc.)的 visual dsp 編譯器,等等。
- 通常,用於嵌入式系統開發的編譯工具鏈都沒有免費版本,而且一般需要通過國內代理進行購買。所以,這對於個人開發者或者嵌入式系統愛好者而言是一道不低的門檻。
- 不過 arino 的開發套件是可免費下載使用的,並且用它做開發板連接調試也十分簡單。arino 所採用的c編譯器是基於 gcc 的。
- 還有像樹莓派(raspberry pi)這種迷你電腦可以直接使用 gcc 和 clang 編譯器。此外,還有像 nvidia 公司推出的 jetson tk 系列開發板也可直接使用 gcc 和 clang 編譯器。樹莓派與 jetson tk 都默認安裝了 linux 操作系統。
- 在嵌入式領域,一般比較低端的單片機,比如 8 位的 mcu 所對應的c編譯器可能只支持 c90 標准,有些甚至連 c90 標準的很多特性都不支持。因為它們一方面內存小,rom 的容量也小;另一方面,本身處理器機能就十分有限,有些甚至無法支持函數指針,因為處理器本身不包含通過寄存器做間接過程調用的指令。
- 而像 32 位處理器或 dsp,一般都至少能支持 c99 標准,它們本身的性能也十分強大。而像 arm 出的 rvds 編譯器甚至可用 gnu 語法擴展。
- 下圖展示了上述c語言編譯器的分類。
④ 急求c語言網路編譯器
c 編譯器是c語言編譯器的超集,所以你去下個visual studio就好了,肯定能編譯c程序。
⑤ 新手用什麼c語言編譯器
tc吧,但是tc不能復制、粘貼,如果覺得tc不好,就用vc 6.0或dev c 都行,雖然是c 的編譯環境,但c語言也可以用的
⑥ 最好的在線編譯器是什麼網站必須包括c和c 的編譯器.
http://cmpe150-1.cmpe.boun.e.tr/phpccompiler/login.php
⑦ 能實現輸入函數的c/c 在線編譯器
我認為目前最好用的在線編譯器; http://www.mcqyy.com/runcode/cpp/
⑧ 在線嗎請教個問題。我想用asp。net開發一個c語言在線編譯器,就是c#直接調用c編譯器實現編譯運行
類似acm的判定平台是么
本質上還是調用c編譯器或編譯庫
把字元穿進去
你可以嘗試在網頁上起個線程直接調用外面的dll 把字元串傳進去試試
⑨ c語言編譯器有哪些各有什麼特點
c語言編譯器目前主要有vc 、dev-c 、c-free、win-tc、tc 2.0等等。
其中比較經典的vc ,微軟的產品,編譯器,鏈接器,運行,調試等功能於一體的強大開發工具,特點是功能十分強大,對於新手來說需要一段時間去摸索。
dev-c 是windows下一款開發c/c 的開發環境,使用gcc為編譯器,遵循標准,功能比較強大,語法高量,可以進行單步調試(這對排除錯誤很重要),進行斷點設置等功能,遵循c標准,是一款很強大的開發工具。
c-free是一款支持多種編譯器的專業化c/c 集成開發環境(ide)。利用c-free,使用者可以輕松地編輯、編譯、連接、運行、調試c/c 程序。
tc 2.0:borland公司的產品,在dos界面下編譯運行,小巧、靈活,但是不能使用滑鼠。
win-tc:在tc2.0的基礎上加上了界面,能夠使用滑鼠,具有語法高量,可以嵌入匯編等特點,對新手一些,拜託了不能用滑鼠的困難。
編譯器,簡單講,就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器(linker) → 可執行程序 (executables)。