【发布时间】:2014-01-16 13:43:22
【问题描述】:
在重构我之前的问题之前,我认为这有点偏离......
标题几乎是在问我的问题。
如何在不提供方法并产生以下错误的情况下单独保留类定义?
这样做的原因是因为我想在一个单独的 DLL(其中包含方法)中创建一个对象,但只返回一个指向我的主程序的引用指针。 顺便说一下,这是显式导出。
错误 1 错误 LNK2001: 无法解析的外部符号 "public: int __thiscall ObjTest::getValue(void)" (?getValue@ObjTest@@QAEHXZ)
class ObjTest
{
private:
int x;
public:
int getValue();
};
【问题讨论】:
-
类定义必须有方法的声明。但方法定义可以放在单独的
.cpp文件中。 -
如果我想在一个单独的 DLL(包含方法)中创建一个对象,但只从我的主程序中引用一个指向它的指针怎么办?
-
你上面提到的应该可以正常工作,因为 C++ 知道指针只是一个 int。但是,如果您尝试取消引用指针并从主文件调用其函数之一(在 DLL 中实现),而不加载该 DLL,我相信它会出错。
-
DLL 具有 ObjTest 类的 .h 和 .cpp。它正在导出 1 个函数,该函数创建它的一个对象并返回一个指针。在我的主程序中,我需要获取该指针,而我能想到的唯一方法就是添加 DLL 的 .h 文件并使用它。但正如我所说,我得到链接器编译错误。另外,让我明确一点,这是显式导出,而不是 dll 导入。
-
@hyde:只要声明类的实例,将其设为纯虚拟会导致编译器错误。
标签: c++ class methods linker-errors definition