This question already has answers here:
What is an undefined reference/unresolved external symbol error and how do I fix it?

(34个答案)


6年前关闭。




抱歉,如果您之前曾问过这个问题,但我找不到合适的答案。
我试图在另一个已经由其他人编写的类中使用我自己的类文件。整个程序基于Omnet ++。在构建之前,一切似乎都还不错,但是一旦我构建了程序,就会出现以下错误
undefined reference to `RatePrediction::RatePrediction(double, double, double)

我正在尝试在CentralEntity中使用RatePrediction,这就是我所做的:

在RatePrediction.cc中:
#include "CentralEntity.h"
RatePrediction::RatePrediction(double gs,double gi, double dataRate):
            gs(gs), gi_int(gi), reqDataRate(dataRate), result(0), error(0){
    //some codes
}

在CentralEntity.h中:
#include "RatePrediction.h"
class CentralEntity : public cAsyncModule
{
//friend classes ....
protected:
  virtual void initialize();
}

在CentralEntity.cc中:
#include "RatePrediction.h"

void CentralEntity::initialize()
{
RatePrediction RateObj(1.1e-13,1.2-13,1e4);
}

编辑:

@hildensia感谢您的评论。我实际上是这样做的,现在可以了。但是我不确定它是否可靠和稳定。

我手动编辑了Makefile并添加了:
OBJS= RatePrediction.o

RatePrediction.o: RatePrediction.cc
    $(CXX) -c $(COPTS) RatePrediction.cc

最佳答案

问题出在编译之内。 RatePrediction.cc似乎根本没有编译。因此,链接器找不到构造函数,因为它没有目标文件。 Makefile中的解决方案目前似乎很合适,但是可能会被您的构建系统覆盖。因此,您应该收集有关如何定义Eclipse应该构建哪些文件的信息。

关于c++ - 类(class)未正确链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21929684/

10-11 23:11
查看更多