簡體   English   中英

如何將.cpp文件鏈接到.h文件以獲取下載的資源庫

[英]How to link .cpp file to .h file for a downloaded library

我是C ++的新手,我一直在完成斯坦福106B CS課程的練習。 我在這里和其他地方發現了很多與我有類似問題的帖子,但沒有一個可以幫我解決我的具體問題。 Stanford 106B類使用我下載的StanfordCPPlib或Stanford c ++庫。 我正在嘗試完成一個需要#include“random.h”的練習,所以我可以使用一種方法來找到0到1之間的隨機實數。無論如何,只需編寫#include“random.h”,其余的文本文件中的必要代碼不起作用。 我收到此錯誤:

make random
c++     random.cpp   -o random
Undefined symbols for architecture x86_64:
  "randomReal(double, double)", referenced from:
      _main in random-BBexsD.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [random] Error 1

斯坦福大學的課程使用Xcode,從網站下載的家庭作業已經設置了與斯坦福大學圖書館一起運行的Xcode項目。 還有一個空白的Xcode項目模板用於教科書練習。 但是,我試圖弄清楚如何在文本編輯器或終端或兩者中執行此操作。 我通常使用文本編輯器編寫所有代碼並在終端中執行。 我已經嘗試編寫#include“file_path_to_stanford_libraries / random.h”,我甚至不確定它是否在.cpp文件中工作,但我試過它無濟於事。 我嘗試將文件放在與random.cpp文件完全相同的目錄中,這也無法正常工作。 對不起這個漫長的,希望,不是愚蠢的帖子。 我感謝任何幫助。

鏈接器錯誤通常意味着頭文件被包含得很好,但是庫不包括在內。 我不知道Clang,所以不能給你一個完整的答案,但是對於g ++,你需要找到庫文件並確保它的目錄在你的LD_LIBRARY_PATH中,然后取其名字; 它將類似於“lib StanfordCPP .so”。 然后,您需要在命令行上向鏈接器添加一個標志,該標志包含在-l(連字符-L)之后的名稱的粗體部分(在lib和文件擴展名之間),因此這里將是-lStanfordCPP

您的命令行看起來像:

g++ -o bin/random random.cpp -lStanfordCPP

不幸的是,這不是Clang,但應該大致相同。 如果其他人想提供Clang方式(或驗證你可以用Clang做到這一點)那就太棒了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM