2013-09-16 31 views
5

Tôi đã tải xuống và biên dịch log4cplus trong VS2012. Biên dịch là tốt (cả gỡ lỗi và phát hành) Tôi đã cố gắng sử dụng nó mã của tôi nhưng tôi nhận được 3 lỗi liên kết, không có gì tôi đã cố gắng không loại bỏ chúng. Tôi đang sử dụng cùng bao gồm từ dự án log4cplus, và libs tôi đã biên soạn (đã thử tất cả 3 ... debug phát hành và log4cplusS.liblỗi liên kết log4cplus khi được sử dụng trong VS2012

tôi vẫn nhận được những:

lỗi LNK2019: biểu tượng bên ngoài chưa được giải quyết "__declspec (dllimport) lớp std :: basic_ostringstream, lớp std :: cấp phát> & __cdecl log4cplus :: chi tiết :: get_macro_body_oss (void)" (_ imp get_macro_body_oss @ chi tiết @ log4cplus @ @YAAAV? $ Basic_ostringstream @ _WU? $ Char_traits @ _W @ std @@ V? $ Allocator @ _W @ 2 @@ std @@ XZ) được tham chiếu trong chức năng "int __cdecl Chuẩn bị (lớp std :: basic_string, lớp std :: cấp phát> &, lớp std :: basic_string, lớp std :: cấp phát> &, lớp std :: basic_string, lớp std: : cấp phát> &, int *, int *, int *) " (? Chuẩn bị @@ YAHAAV? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocator @ D @ 2 @@ std @@ 00PAH11 @Z)

lỗi LNK2019: chưa được giải quyết biểu tượng bên ngoài "__declspec (dllimport) công cộng: tĩnh lớp log4cplus :: Logger __cdecl log4cplus :: Logger :: getInstance (lớp std :: basic_string, lớp std :: cấp phát> const &) " (_ imp? Get @ @ SA? tham chiếu trong chức năng "int __cdecl Chuẩn bị (lớp std :: basic_string, lớp std :: cấp phát> &, lớp std :: basic_string, lớp std :: cấp phát> &, lớp std :: basic_string, lớp std :: người cấp phát> &, int *, int *, int *) " (? Chuẩn bị @@ YAHAAV? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocator @ D @ 2 @@ std @@ 00PAH11 @ Z)

Điều gì là sai?

Mã của tôi rất đơn giản, trong dll cpp của tôi:

trong top của cpp tôi thêm

static Logger logger; 

tại một trong những chức năng tôi đã thêm:

logger = Logger::getInstance(LOG4CPLUS_TEXT("MyDLL")); 
LOG4CPLUS_INFO(logger, LOG4CPLUS_TEXT("Prepare Starts")); 

Trả lời

6

Nó có khả năng bạn đã biên dịch log4cplus bằng cách sử dụng cấu hình Release. Bạn sẽ cần sử dụng Release_Unicode (tương tự cho cấu hình Debug).

+0

Bạn đúng ... nhưng tại sao? – Dani

+1

Vì Visual Studio 2010 (tôi tin), tất cả các dự án mới được tạo bằng 'TCHAR' là' wchar_t' (thiết lập Unicode trong nhóm cài đặt chung). Cài đặt này xác định các ký hiệu tiền xử lý 'UNICODE' và' _UNICODE'. Các biểu tượng này cũng được sử dụng bởi log4cplus. Nếu bạn hoàn toàn muốn vô hiệu hóa điều này, bạn có thể, nhưng tôi sẽ đề nghị chống lại điều đó cho bất cứ thứ gì không phải là một dự án đồ chơi. – wilx

+0

Có, tôi đã sử dụng phiên bản unicode, tôi có thể cần nó anyways ... không cho đăng nhập nhưng đối với phần còn lại của dự án ... – Dani

Các vấn đề liên quan