0

我有一组用 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 标头时放置任何#pragma?

4

1 回答 1

2

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

于 2011-08-16T04:25:16.677 回答