在链接步骤中,我收到了警告。这些警告仅在发布模式下出现。
我的程序由两部分组成:生成 .lib 的库和使用该库的可执行文件。
当我构建库时,没有警告。但是当我构建可执行文件时,在链接时我会收到警告 LNK4217 和 LNK4049。例如:
3>DaemonCommon.lib(Exception.obj) : warning LNK4217: locally defined symbol ??0exception@std@@QAE@ABQBD@Z (public: __thiscall std::exception::exception(char const * const &)) imported in function "public: __thiscall std::bad_alloc::bad_alloc(char const *)" (??0bad_alloc@std@@QAE@PBD@Z)
3>DaemonCommon.lib(CommAnetoException.obj) : warning LNK4217: locally defined symbol ??0exception@std@@QAE@ABQBD@Z (public: __thiscall std::exception::exception(char const * const &)) imported in function "public: __thiscall std::bad_alloc::bad_alloc(char const *)" (??0bad_alloc@std@@QAE@PBD@Z)
我在 MSDN 上读到,这些警告可能是由于 __declspec(dllimport) 的声明引起的。但是,在我的库的类中,我没有像这样声明的东西。例如,这是我的 Exception 类:
#ifndef _EXCEPTION_HPP__
#define _EXCEPTION_HPP__
#include <string>
namespace Exception
{
class Exception
{
public:
// Constructor by default
Exception();
// Constructor parametrized
Exception(std::string& strMessage);
// Get the message of the exception
virtual std::string getMessage() const;
// Destructor
virtual ~Exception();
protected:
// String containing the message of the exception
std::string mStrMessage;
};
}
#endif
有人能告诉我这些警告为什么会出现以及如何删除它们吗?