線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:816
推到 Plurk!
推到 Facebook!

程式連接問題

尚未結案
Smallcat7315
一般會員


發表:19
回覆:22
積分:7
註冊:2005-05-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-15 00:50:04 IP:218.168.xxx.xxx 未訂閱
請幫我看一下以下的程式 為何不能LINK    http://0rz.net/f20ml
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-15 02:11:59 IP:211.74.xxx.xxx 未訂閱
您好!我試過用Visual C++ 可編譯、Link也! 畫面如下:
Smallcat7315
一般會員


發表:19
回覆:22
積分:7
註冊:2005-05-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-15 10:48:46 IP:218.168.xxx.xxx 未訂閱
引言: 您好!我試過用Visual C++ 可編譯、Link也! 畫面如下:
以下程式有三個檔 要引用.h .cpp檔LINK成一個程式 各別開可以執行 程式有三個檔 要引用.h .cpp檔LINK成一個程式 就會出錯
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-15 11:10:32 IP:59.104.xxx.xxx 未訂閱
不把錯誤訊息寫出來。要大家猜嗎?
Smallcat7315
一般會員


發表:19
回覆:22
積分:7
註冊:2005-05-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-15 12:39:39 IP:218.168.xxx.xxx 未訂閱
引言: 不把錯誤訊息寫出來。要大家猜嗎?
不好意思 我把錯誤訊息貼上來了 幫我看看@@ 謝謝
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-15 14:07:28 IP:211.74.xxx.xxx 未訂閱
建議: 把run.cpp的內容寫到3.cpp裡面! 把run.h的內容加入:
#ifndef _run_H_
#define _run_H_    #endif
這錯誤是重複定義void_cdecl run(char const *,char const *)函式! run.h加入這三行是為了防止標頭檔的重複引入 再試試看吧!
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-15 21:31:07 IP:210.64.xxx.xxx 未訂閱
3.cpp run.cpp 這兩個檔中都有  run 這個函數。 查一下吧。 你的檔案我沒法子開。(rar....)
windblown
中階會員


發表:0
回覆:117
積分:98
註冊:2003-11-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-05-16 09:32:58 IP:61.229.xxx.xxx 未訂閱
問題出在 run.h 裡面的 #include "run.cpp"    因為你已經把 run.cpp 加到 project 裡面了,而 3.cpp 裡面的的 run.h 又再次把 run.cpp 放入 project 一次,造成 run() 被定義兩次而導致錯誤!!    解決方法: 移除 run.h 的 #include "run.cpp" 即可    程式的觀念 1 不要在 .h 內 #include "XXX.cpp" 2 分清楚「宣告」與「定義」的差別!! 在 run.h 內的 void run(const char *infile,const char *outfile); 為宣告 在 run.cpp 的
void run(const char *infile,const char *outfile)
{
...
} 
是定義 宣告可以有很多個,但是定義只能一個!!
Smallcat7315
一般會員


發表:19
回覆:22
積分:7
註冊:2005-05-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-05-16 13:31:11 IP:218.168.xxx.xxx 未訂閱
引言: 問題出在 run.h 裡面的 #include "run.cpp" 因為你已經把 run.cpp 加到 project 裡面了,而 3.cpp 裡面的的 run.h 又再次把 run.cpp 放入 project 一次,造成 run() 被定義兩次而導致錯誤!! 解決方法: 移除 run.h 的 #include "run.cpp" 即可 程式的觀念 1 不要在 .h 內 #include "XXX.cpp" 2 分清楚「宣告」與「定義」的差別!! 在 run.h 內的 void run(const char *infile,const char *outfile); 為宣告 在 run.cpp 的
void run(const char *infile,const char *outfile)
{
...
} 
是定義 宣告可以有很多個,但是定義只能一個!!
原來是我搞錯意思了阿 我以為是 main.cpp 引用run.h 之後 run.h 引用run.cpp 才可以使用函式 如果不是這樣 那請問 這程式的流程 會怎樣跑 不然run.h 怎知道run.cpp?? 麻煩解答一下
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-05-16 15:22:08 IP:140.127.xxx.xxx 未訂閱
如果一定要有run.cpp與run.h那就用: main.cpp裡面#include "run.cpp" run.cpp裡面#include "run.h" 要記住run.h裡面一定要加 #ifndef _run_H_ #define _run_H_ #endif run.h加入這三行是為了防止標頭檔的重複引入
windblown
中階會員


發表:0
回覆:117
積分:98
註冊:2003-11-14

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-05-17 09:23:15 IP:61.229.xxx.xxx 未訂閱
1 在 project 內放入你會用到的 function 的 .cpp 及 .lib, VC 就會將把你的 function 變成 exe 2 每個 .cpp 之間要如何認識互相之間的 function 呢? 那就要透過 .h 了;因此 .h 內通常都放 function, class, struct, varibale 的宣告 所以你會用 #include 〈iostream〉 就是用了「標準」的 Cpp variable(ex: cin or cout) 與 function ( cin 的 〉〉 or cout 的 〈〈 ) 至於 lib, VC 已經偷偷幫你加到 project, 你沒加入該 lib, 也可以 compile 成功
系統時間:2024-11-22 8:40:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!