看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 因為課程需要的緣故,我必須使用學長提供的library, 但這是我第一次使用別人提供的lib,他的檔案架構如下 +include | libpa.h | pa_utility.h | +lib | libpa.a | +src | libpa.cpp | pa_utility.cpp | padump.cpp | painfo.cpp | +bin | painfo (執行檔) | Makefile 請問如果我今天要使用定義在libpa.h裡面的一個function "writeToFile" 我的testpa.cpp檔該怎麼include呢, 我試過 #include "libpa.h" 然後compile時寫 g++ testpa.cpp -o testpa -I ./include/ -L ./lib -lpa 但還是error " 'writeToFile' was not declared in this scope " 那請問要怎麼compile(-I -L參數??),或寫makefile呢? 懇請各位高手相助,謝謝。 或者提供相關資源,哪裡可以學到怎麼建立這種有src, include, lib等資料夾的程式 開發平台: Linux -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.252.248 ※ 編輯: sa901119 來自: 140.112.252.248 (12/07 20:33)
james732:你的程式與他的程式的目錄關係? 12/07 20:37
sa901119:我的程式只有一行 wirteToFile("filename"); 12/07 20:39
sa901119:目的是使用他定義在libpa.h裡面的這個函式 12/07 20:40
sa901119:如果我把我的程式放在這整個目錄下 12/07 20:40
sa901119:就是放在上面架構的Makefile旁邊的話?? 12/07 20:41
tinlans:C/C++ 的大前提,就是識別字在使用前必須先宣告,你必須要 12/07 21:08
tinlans:確實 include 到有宣告 writeToFile 是什麼東西的 header 12/07 21:08
tinlans:檔,再來 g++ 的 -I 跟 -L 後面跟的 path 應該是連著的。 12/07 21:08
tinlans:如 -Idir 和 -Ldir,中間沒有空格,我也不曉得現在可不可 12/07 21:11
tinlans:以有空格 (有點懶得去試)。 12/07 21:11
sa901119:我把空格去掉了還是不行 12/07 21:23
sa901119:g++: -lpa: linker input file unused because linking 12/07 21:24
sa901119:not done 12/07 21:24
sa901119:我加了 -lpa 來compile之後出現上面那句 12/07 21:24
sa901119:但不加 -lpa 則會出現 12/07 21:25
sa901119:undefined reference to `C_PA::C_PA(char const*)' 等行 12/07 21:25
phterry:試試 g++ testpa.cpp -o testpa -I ./include/ lib/libpa 12/08 00:29
phterry:g++ testpa.cpp -o testpa -Iinclude lib/libpa.a 12/08 00:31
tinlans:去掉空格,參數位置放對,還是錯的話,就是其它問題。 12/08 07:25
tinlans: ^還有 12/08 07:27
phterry:空格是沒差的, 不僅是 -I, -L, -lpa 也可寫成 -l pa 12/08 10:37
ledia:-I -L 這些東西不都是要在 -o 之前嗎? @@" 還是沒這規定? 12/08 10:52
sunneo:不然先編成obj再弄成bin吧 12/08 15:13
sa901119:謝謝各位 真正的問題好像是那些library的.cpp也要一起編 12/10 03:47
sa901119:不然.h檔只有定義 他不知道怎麼implement 12/10 03:48