作者sa901119 (ads901119)
看板C_and_CPP
標題[問題] 大程式架構 src include bin lib等資料夾怎麼用??
時間Mon Dec 7 20:33:14 2009
遇到的問題: (題意請描述清楚) 因為課程需要的緣故,我必須使用學長提供的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