【发布时间】:2014-07-01 13:22:05
【问题描述】:
我已经建立了一个库,提供从标准异常派生的异常类:
#include <stdexcept>
#include <string>
class BaseException : public std::runtime_error
{
public:
BaseException( std::string const & msg );
};
到目前为止,一切都很好。在 Unix 上编译和处理得很好。现在我正在准备将其编译成 Windows DLL:
#ifdef WIN32
#define MY_EXPORT __declspec(dllexport)
#else
#define MY_EXPORT
#endif
#include <stdexcept>
#include <string>
class MY_EXPORT BaseException : public std::runtime_error
{
public:
BaseException( std::string const & msg );
};
但是,这给了我warning C4275:non – DLL-interface class 'std::runtime_error' used as base for DLL-interface class 'BaseException'。
不幸的是,我对 Microsoft 风格的文档有些过敏:过于冗长,而且不是很中肯。它一直让我对解决问题的实际期望感到完全困惑。
有谁能给我解惑?我可以只删除基类,但随后捕获 std::runtime_error 或 std::exception 不会捕获我的自定义异常类,我非常希望这是可能的。所以……?
【问题讨论】:
标签: c++ windows exception dll dllexport