虚拟与纯虚拟基类函数并从DLL导出
virtual vs pure virtual base class functions and exporting from dll
我在DLL中定义了一个基类:
class Base
{
public:
virtual void doSomething(); // Definition in cpp
virtual void doSomethingElse() = 0; // May have a definition in cpp
};
在另一个DLL中,我从基础中得出并实现必要的方法
class Derived : public Base
{
public:
// Use base implementation for doSomething
void doSomethingElse() override;
}
我正在获取链接器错误未解决的基础外部符号:: dosomething()。
从我的理解中,由于Dosomething()并非超过,因此派生的类需要访问base :: dosomething定义,因为我尚未明确指出基类,因此无法派生,而在另一个模块中衍生。
但是为什么纯虚拟函数不会发生这个问题(也可以具有定义)?
P.S 我正在使用VS2013
但是为什么纯虚拟函数不会发生这个问题(也可以具有定义)?
这只有在明确调用基类的纯虚拟函数时才发生。否则,不必实施。
例如。您是否实施Derived::doSomethingElse()
为:
void Derived::doSomethingElse()
{
// Do base class stuff first.
Base::doSomethingElse();
// Then do derived stuff
}
您也会看到Base::doSomethingElse
的同样问题。
相关文章:
- 挂起和取消挂起一个文件DLL
- 虚拟决赛作为安全
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 导入库可以跨dll版本工作吗
- 从C++dll访问C#中的一行主要参数
- 链接到自行创建的dll失败
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 跨 DLL 边界访问虚拟方法是否安全/可能?
- C++ DLL 类导出、编译器"optimizes"虚拟调用
- c++\CLI dll包装器,用于调用c++类中的虚拟成员
- C++端口监视器 (mfilemon.dll) RDP 虚拟通道代码未执行
- 为什么从 DLL 调用类方法需要虚拟说明符?
- DLL导入纯虚拟结构和unique_ptr由于Compressed_pair而无法编译
- 虚拟与纯虚拟基类函数并从DLL导出
- 从 DLL (C++) 获取虚拟类接口
- DLL编程(C++| MSVS)虚拟和派生
- dll是如何映射到当前程序的虚拟地址空间的
- MetaTrader4在WinXP模式虚拟PC上的deinit()+dll线程关闭(崩溃?)
- C++具有非虚拟析构函数的 DLL 接口类