Tôi đã có dự án C++ bản địa VS2008, mà tôi muốn biên dịch thành một DLL.Dự án C++ biên dịch thành lib tĩnh, không thành công (lỗi liên kết) dưới dạng lib động. tại sao?
Nó chỉ tham chiếu một thư viện bên ngoài (log4cplus.lib) và sử dụng các chức năng của nó. (cũng sử dụng các tệp .h của log4cplus, một cách tự nhiên).
Khi tôi cố gắng biên dịch dự án của mình như một thư viện tĩnh, nó thành công. Khi tôi cố gắng như DLL, nó không thành công:
1>MessageWriter.obj : error LNK2019: unresolved external symbol "public: static class log4cplus::Logger __cdecl log4cplus::Logger::getInstance(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" ([email protected]@[email protected]@[email protected][email protected][email protected][email protected]@@[email protected][email protected]@@[email protected]@@Z) referenced in function "class log4cplus::Logger __cdecl Log(void)" ([email protected]@[email protected]@@XZ)
Có thêm 4 lỗi như thế này liên quan đến chức năng trong log4cplus.lib.
Có vẻ như điều gì đó thực sự ngu ngốc .. hãy giúp tôi :)
Cảm ơn!
Chỉnh sửa:
Tôi được liên kết với tệp log4cplus.lib và nó thấy nó rất ổn. cũng vậy, log4cplus.lib là chức năng 100%, tôi đang sử dụng nó trong một dự án khác mà không có vấn đề gì. Ý định ban đầu của tôi là biên dịch dự án của tôi thành một thư viện tĩnh và sử dụng nó trong một DLL khác mà tôi đang viết, nhưng khi làm điều này, tôi nhận được cùng một lỗi liên kết trong dự án khác ...
Edit # 2:
Các chức năng gây ra lỗi liên kết là các hàm tĩnh .. đây có phải là một phần của sự cố không?
vâng, tôi đang liên kết với các tập tin log4cplus.lib ... – Roey
OK mát - và đó là trong đường dẫn thư viện? – trojanfoe
có, nó tìm thấy các tập tin chắc chắn (khi tôi thay đổi tên lib để một cái gì đó không có thật biên dịch thất bại ngay lập tức) ... Tôi không hiểu tại sao nó không tìm thấy các chức năng này bên trong log4cplus.lib ... :( – Roey