我有一组用VS6写的代码,我正在尝试在VS2008中为它写一个CLI包装器。我在VS6代码中包含了一个CLI头文件并进行了编译。
在编译时,我得到了
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标头时,我必须放入任何#杂注吗?
发布于 2011-08-16 12:25:17
听起来你没有在你的项目中包含'CPP文件‘。这也解释了为什么当你有两个物体时,你不会得到错误。要检查这一点,请尝试在CPP文件中放置一个故意的编译错误。如果编译器没有错误,这将证明你没有编译CPP文件。
https://stackoverflow.com/questions/7073598
复制相似问题