У меня есть предупреждения на шаге ссылки.Эти предупреждения появляются только в режиме выпуска.
Моя программа состоит из двух частей: библиотеки, которая генерирует .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).Но в моих классах моей библиотеки у меня нет таких вещей.Например, вот мое исключение класса:
#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
Может кто-нибудь сказать мне, почему появляются эти предупреждения и как их удалить?