Tôi có cảnh báo về bước liên kết. Những cảnh báo này chỉ xuất hiện ở chế độ phát hành.Cách xóa cảnh báo LNK4217 và LNK4049
Chương trình của tôi bao gồm hai phần: thư viện tạo tệp .lib và tệp thực thi sử dụng thư viện này.
Khi tôi xây dựng thư viện, tôi không có cảnh báo. Nhưng khi tôi xây dựng tệp thực thi của mình, trên liên kết, tôi có cảnh báo LNK4217 và LNK4049. Ví dụ:
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)
Tôi đã đọc trong MSDN, những cảnh báo này có thể do khai báo __declspec (dllimport). Nhưng, trong các lớp học của tôi về lib của tôi, tôi đã không có những thứ tuyên bố như thế này. Ví dụ, đây là lớp ngoại lệ của tôi:
#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
Có thể ai đó cho tôi biết lý do tại sao những cảnh báo này xuất hiện và làm thế nào để xóa chúng?
Thực tế, điều này là do dự án thực thi của tôi được xác định trên "Multi-threaded DLL \ MD" thay vì "Multi-threaded \ MT" ... Tôi không biết tại sao. .. Cảm ơn ;-) – Cedekasme