如何将.cpp文件链接到.h文件以获取下载的资源库

时间:2013-09-05 22:50:39

标签: c++ libraries

我是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文件完全相同的目录中,这也无法正常工作。对不起这个漫长的,希望,不是愚蠢的帖子。我感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

该链接器错误通常意味着包含的头文件很好,但是不包括库。我不知道Clang,所以不能给你一个完整的答案,但是对于g ++,你需要找到库文件并确保它的目录在你的LD_LIBRARY_PATH中,然后取其名字;它将类似于“lib StanfordCPP .so”。然后,您需要在命令行上向链接器添加一个标志,该标志包含名称(在lib和文件扩展名之间)之后的-l(连字符-L),所以这里将是-lStanfordCPP

您的命令行看起来像:

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

不幸的是,这不是Clang,但它应该是一样的。如果其他人想提供Clang方式(或验证你可以用Clang做到这一点)那就太棒了。