【问题标题】:Compiling .cc files? [duplicate]编译 .cc 文件? [复制]
【发布时间】:2014-06-17 15:53:27
【问题描述】:

伙计们,我遇到了一个奇怪的问题,它一直工作正常,但突然搞砸了 这是问题所在。我有 test.h 和 test.cc 和 mainP.cc。

在 mainP.cc 中:

#ifndef test_H
#include "test.h"
#endif

在 test.h 中:

#ifndef test_H
#define test_H

在 test.cc 中:

#ifndef test_H
#include "test.h"
#endif

现在当我说测试 tInstance;它给了我对 test::test() 的未定义引用; 我检查了我的定义。构造是公开的。在我看来一切都很好。我不确定我错了什么?我用g++编译它。

【问题讨论】:

  • test.h 不是缺少#endif 吗?在任何情况下,从 .cc 文件中删除 #ifdef,包含保护应该只在标题中。
  • 不要在 #include "test.h" 的文件中使用包含保护 - 仅在 test.h 本身中有包含保护。尽管我怀疑这与您的问题有关。我认为您提供的信息不足以让任何人帮助您解决问题。

标签: compiler-construction


【解决方案1】:

从到目前为止的稀疏信息来看,您似乎没有正确地将文件链接在一起,并且您正在尝试构建 main.cc 而没有将 test.cc 链接到它,因此它找不到函数的定义.检查你的命令行。

由于 cmets 中指出的原因,标头保护错误(不要在 #include 周围放置保护,仅在 .h 文件本身中,但我不认为它们是问题的原因。

这似乎与G++ undefined reference to class::function 重复

【讨论】:

  • 谢谢你们。存在链接问题。非常感谢它修复了
猜你喜欢
  • 1970-01-01
  • 2012-04-04
  • 1970-01-01
  • 2019-11-27
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
  • 2014-01-31
  • 2020-01-22
相关资源
最近更新 更多