我有一组用 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?