我有一组用VS 6编写的代码。我试图为此在VS 2008中编写一个CLI包装程序。我在CLI代码中包含了一个VS6头文件并进行了编译。在编译时,我得到LNK2001: unresolved external symbol "public: virtual void __thiscall Someclass::SomeMethod(SomeObject& os)。当我在错误中搜索方法和类时,它与代码相对应,

头文件。

class SomeClass: public ParentClass
 {
  virtual void SomeMethod(SomeObject& os);
}

CPP文件
void SomeClass::SomeMethod(SomeObject& os)
{
//Implementation here
}

SomeMethod实际上是从ParentClass重写的

当我在头文件中通过添加一个打开和关闭大括号作为声明时
virtual void SomeMethod(SomeObject& os) {};

错误消失。但是我不能这样做,因为它将导致一种方法具有两个主体。为什么会这样呢?我该如何克服呢?还是在CLI中包含BS6 header 时是否必须放置任何#pragma?

最佳答案

听起来您的项目中没有包含“CPP文件”。这也可以解释为什么当您有两个物体时您不会出错。若要进行检查,请尝试在CPP文件中放入故意的编译错误。如果编译器没有抱怨,那将证明您不是在编译CPP文件。

关于c++ - 如何解决LNK2001,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7073598/

10-13 01:09