看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) win10 + MSYS2 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) mingw 問題(Question): 我用C語言寫了一個遊戲 而我想挑戰只用編輯器和make來完成 程式編譯通過了(.o檔) 但卻在連結時出了問題 像這樣 https://i.imgur.com/lO4mEoq.jpg 程式架構大概像這樣 我在.h檔中宣告了所有函數 在a.c中使用這些函數,而這些函數則定義在b.c中 而我覺得原因可能有兩種 1.我對C語言不夠熟悉,可能需要加些關鍵字告訴編譯器要如何連結 2.我剛從Google學來寫的make有問題 我覺得2的可能性比較大 想問問看大大們有什麼看法,謝謝 餵入的資料(Input): 原始檔 預期的正確結果(Expected Output): 執行檔 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) 補充說明(Supplement): Makefile CC = gcc game: main.o snake.o draw.o scenes.o init.o linkedlist.o os_func.o sna.h $(CC) -o game main.o snake.o draw.o scenes.o init.o linkedlist.o os_fu nc.o %.o: %.c sna.h $(CC) -c $< clean: rm -f *.out *.exe *o -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.126.109.77 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1521396247.A.741.html
Lipraxde: 有些版本的gcc在連結的時候會受到輸入檔案順序的影響,03/19 08:24
Lipraxde: 前面的.o眼睛看不到後面的...不知道為什麼03/19 08:24
Lipraxde: clean 那裡*o是不是要寫*.o?03/19 08:24
Lipraxde: game 那邊可以寫$(CC) $^ -o game.exe03/19 08:24
好的,謝謝,我回去試試看
descent: 你有用到除了 c library 之外的其他 library 嗎?03/19 09:26
有,os_func.c 裡有用到conio.h ※ 編輯: wei115 (59.126.109.77), 03/19/2018 09:43:14
carylorrk: L大說的是 link library 時才會出現的問題,可以參考 03/19 10:07
carylorrk: https://goo.gl/A4jvfRhttps://goo.gl/K96CGp 03/19 10:09
carylorrk: 一般來說現在的 compiler 會找所有的 object files 03/19 10:17
恩,結果是我耍蠢了,函式定義的名稱和宣告的不一樣,結果當然會出錯 修改之後就正常了 謝謝大家,浪費各位的時間了... ※ 編輯: wei115 (59.126.109.77), 03/20/2018 02:15:02