正如我之前发送过一些关于LNK 2019的问题,我遇到了一段代码,我不明白发生了什么:
RTIFederate.cpp
#include "RTIFedAmb.h"
#include "RTIFederate.h"
....
this->fedamb = new RTIFedAmb(); <- ERROR ! LNK 2019
RTIFedAmb.h
class RTIFedAmb : public NullFederateAmbassador
{
public:
// methods //
RTIFedAmb();
virtual ~RTIFedAmb() throw();
}
文件RTIFederate.h
class RTIFederate
{
public:
RTIambassador *rtiamb;
RTIFedAmb *fedamb;
}
RTIFedAmb.cpp
#include "RTIFedAmb.h"
using namespace rti1516e;
using namespace std;
//----------------------------------------------------------------------
// CONSTRUCTORS
//----------------------------------------------------------------------
RTIFedAmb::RTIFedAmb()
{
}
RTIFedAmb::~RTIFedAmb() throw()
{
}
任何人都可以帮我解决这个错误吗?我错过了什么?
答案 0 :(得分:0)
我在你原来的问题中看到RTI3.cpp是#including“RTIFederate.cpp”。不建议这样做。分离源文件进行编译后,如果仍有链接错误,我建议使用VS工具dumpbin.exe
和undname.exe
。 Dumpbin可以显示您定义和引用RTIFedAmb构造函数的位置(obj文件),以及揭示任何装饰问题(调用约定,链接等)。然后,Undname可以帮助您理解和解决这些差异。