Ⅰ C語言 編譯、組件、執行
一般來說編譯過後就成了基本上能執行的2進制代碼。但是這些2進制代碼並不完善,一個程序往往需要調用不止一部分的代碼,所以需要把這些代碼全部整合起來才能執行。
即時你的程序看起來只有一個文件,但是編譯過後,多多少少裡面至少會調用到一些操作系統功能,和其它的一些設置,所以依然需要組建這個過程把這個程序和這些系統默認的代碼組建起來形成一個完成、單一的可執行文件。所以一般組建過程就包含了組建內部和外部代碼,一般來說內部代碼就是我說的系統預留的必要的一些代碼(例如怎麼具體完成把一些字元顯示在屏幕上呀這些功能),而外部代碼就是額外的調用自己寫得或者別人寫得其它程序功能(往往當你的程序調用了非C標准函數的時候)。
所以就算你的代碼可以編譯,但是可能因為組建並不成功(例如需要組建的代碼本身有bug,或者丟失,或者版本不匹配),你的程序依然可能無法正確運行。
Ⅱ 用java寫了個簡單的GUI,編譯成功,組件怎麼都顯示不出來,開發工具用的是myeclipes 8.5。
漏了
this.getContentPane().add(jp1);
this.getContentPane().add(jp2);
this.getContentPane().add(jp3);
Ⅲ 為什麼這個C語言程序編譯與組件都沒錯,而運行就出錯了呢 #include<stdio.h> #
char *p="adfdf\0";p指針指向的是常量,數據存儲在常量區,不允許修改的,所以運行會報錯,編譯連接沒問題是因為語法上確實沒問題。
char *p="adfdf\0";char *q="adfdf\0";你看一下p和q的值,其實是一樣的
Ⅳ 請問此程序javac 編譯不能通過是什麼原因(路徑沒問題)
沒問題啊,我過去運行都沒問題。有一個警告而已。
如果你的編譯確實有問題,看看你的JDK的版本,我用的是1.6。
補充回答:
看你的錯誤截圖少寫了個i
importjavax.swing.*你寫成了mportjavax.swing.*
是不是的時候少了個字母啊?
繼續補充:
你的問題太奇怪了,我把你代買下來,新建了java文件,在命令行裡面javac是沒問題的啊。截個圖片給你看下吧。
Ⅳ 程序編譯通過,為什麼沒結果,請高手看看
1.窗口類信息沒填全.在注冊窗口類之前加下面兩行:
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.hIconSm=LoadIcon(NULL,IDI_APPLICATION);
2.窗口類的名字是]="HELLO WORLD!",而你創建窗口用的是]="HELLO WORLD",少了個感嘆號...加個感嘆號,這樣就出來了.
Ⅵ Java窗口有關問題!!編譯通過,但是無法運行
import java.awt.FlowLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class ComponntInWindow extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
JTextField text ;
JButton button ;
JCheckBox checkBox1 , checkBox2 , checkBox3 ;
JRadioButton radio1 , radio2 ;
JComboBox comboBox ;
ComponntInWindow(){
init() ;
setVisible(true) ;
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
}
private void init() {
// TODO Auto-generated method stub
this.setLayout(new FlowLayout()) ;
this.add(new JLabel("文本框 ")) ;
text = new JTextField(10) ;
add(text) ;
add(new JLabel("按鈕")) ;
button = new JButton("確定") ;
add(button) ;
add(new JLabel("選擇框")) ;
checkBox1 = new JCheckBox("喜歡音樂");
checkBox2 = new JCheckBox("喜歡旅遊");
checkBox3 = new JCheckBox("喜歡籃球");
add(checkBox1) ;
add(checkBox2) ;
add(checkBox3) ;
add(new JLabel("單選按鈕")) ;
ButtonGroup group = new ButtonGroup();
radio1 = new JRadioButton("男") ;
radio2 = new JRadioButton("女") ;
group.add(radio1) ;
group.add(radio2) ;
add(new JLabel("下拉列表")) ;
comboBox = new JComboBox() ;
comboBox.addItem("音樂天地") ;
comboBox.addItem("武術天地 ") ;
comboBox.addItem("象棋樂園") ;
add(comboBox) ;
add(new JLabel("文本區:")) ;
JTextArea area = new JTextArea(6 , 12);
add(new JScrollPane(area)) ;
}
public static void main(String[] args) {
ComponntInWindow win = new ComponntInWindow() ;
win.setBounds(100, 100, 310, 260) ;
win.setTitle("常用組件");
}
}
Ⅶ C/C++寫的DLL(帶COM組件),通過編譯,運行提示載入失敗,內存位置無法訪問!(有圖)
檢查 DLL 依賴
檢查 是否 注冊
Ⅷ vc++6.0環境下,程序的編譯和組件都沒有問題,卻出現下面的情況,非常感謝哪位能幫忙解釋一下
訪問了不該訪問的地址單元就會出現你所說的情況。一般數組越界等會導致你所說的問題,若程序不是很長的話,貼出來,馬上可以找到原因的。
#include "stdio.h"
void sort(int*p,int n)
{
int i,j,t;
for(i=0;i<n;i++) //改過!改過!改過!改過!
{for(j=n-1;j>=i;j--) //改過!改過!改過!改過!
if(*(p+j)<*(p+j-1)){t=*(p+j);*(p+j)=*(p+j-1);*(p+j-1)=t;}}
}
void main()
{
int a[5]={3,4,2,5,1},i;
sort(a,5);
for(i=0;i<5;i++)
printf("%d ",*(a+i));
}
Ⅸ 編譯可以通過,怎麼沒有結果
程序運行完了之後就關閉了,所以你看不見。
在後面加一個輸入的語句等待你輸入東西你就可以看到結果了。
Ⅹ 為什麼我的這段程序編譯通過,組件EXE文件成功但運行崩潰,謝謝~~
修改for循環條件為:
for(i=0; *p!=' ' && *p!='\0'; p++,i++)
修改後可以運行,但是結果可能不符合你的預期。你需要把你的程序的目的說出來,才能知道你要干什麼。
還有,在編程能力有限的情況下,建議由易到難,先編一些小的程序。
#include <string.h>
#include <stdio.h>
#include <ctype.h>
judge_1();
judge_2();
int number=-1;
int k=0;
char cache[50];
int main()
{
int i=0;
char code[1000];
char *p=code;
for(i=0;i<=999;i++)
code[i]='\0';
for(i=0;i<=49;i++)
cache[i]='\0';
printf(" Please inupt a string\n");
scanf("%s",code);
do
{
while (*p==' ') p++;
if(*p=='\0') break;
for(i=0; *p!=' ' && *p!='\0'; p++,i++)
cache[i]=*p;
printf("strimed string are : %s\n", cache);
printf(" The conpiled codes are:\n\n");
k=0;
judge_1();
judge_2();
printf("(");
if(number!=-1)
printf("%d",number);
else printf("error");
printf(",");
for(i=0;cache[i]!='\0';i++)
printf("%c",cache[i]);
printf(")");
for(i=0;i<=49;i++)
cache[i]='\0';
}while(p!=&code[1000]);
getchar();
//return 0;
}
judge_1() //判斷除字母和數字以外的內容
{ if(k==0)
{ if(strcmp(cache,"begin")==0) number=1;
if(strcmp(cache,"if")==0) number=2;
if(strcmp(cache,"then")==0) number=3;
if(strcmp(cache,"while")==0) number=4;
if(strcmp(cache,"do")==0) number=5;
if(strcmp(cache,"end")==0) number=6;
if(strcmp(cache,"+")==0) number=13;
if(strcmp(cache,"-")==0) number=14;
if(strcmp(cache,"*")==0) number=15;
if(strcmp(cache,"/")==0) number=16;
if(strcmp(cache,":")==0) number=17;
if(strcmp(cache,":=")==0) number=18;
if(strcmp(cache,"<")==0) number=20;
if(strcmp(cache,"<>")==0) number=21;
if(strcmp(cache,"<=")==0) number=22;
if(strcmp(cache,">")==0) number=23;
if(strcmp(cache,">=")==0) number=24;
if(strcmp(cache,"=")==0) number=25;
if(strcmp(cache,";")==0) number=26;
if(strcmp(cache,"(")==0) number=27;
if(strcmp(cache,")")==0) number=28;
if(strcmp(cache,"#")==0) number=0;
k=1;
}
}
judge_2()
{
if(k==1)
{ int i=0;
int a=0;
if(isalnum(cache[0])==1) number=10; //判斷字母
for(i=0;cache[i]!='\0';i++)
{ if(isalnum(cache[i])==0)
a=0;
else a=1;
if(a=1) number=-1; break;
}
if(a=0) number=11;
}
}