У меня есть предупреждения о шаге ссылки. Эти предупреждения появляются только в режиме деблокирования.
Моя программа состоит из двух частей: библиотеки, которая генерирует .lib и исполняемый файл, который использует эту библиотеку.
Когда я создаю библиотеку, у меня нет предупреждений. Но когда я создаю свой исполняемый файл, по ссылке у меня есть предупреждения LNK4217 и LNK4049. Например:
3>DaemonCommon.lib(Exception.obj) : warning LNK4217: locally defined symbol [email protected]@@[email protected]@Z (public: __thiscall std::exception::exception(char const * const &)) imported in function "public: __thiscall std::bad_alloc::bad_alloc(char const *)" ([email protected]@@[email protected]@Z)
3>DaemonCommon.lib(CommAnetoException.obj) : warning LNK4217: locally defined symbol [email protected]@@[email protected]@Z (public: __thiscall std::exception::exception(char const * const &)) imported in function "public: __thiscall std::bad_alloc::bad_alloc(char const *)" ([email protected]@@[email protected]@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
Может кто-нибудь сказать мне, почему появляются эти предупреждения и как их удалить?