Tôi đang phát triển một thư viện dùng C++ trong Linux, và tôi muốn thư viện này sử dụng log4cxx cho mục đích ghi nhật ký. Tuy nhiên, tôi không chắc chắn làm thế nào để thiết lập này. Để log4cxx hoạt động, tôi cần phải tạo một đối tượng logger. Làm cách nào để đảm bảo đối tượng này được tạo khi thư viện của tôi được tải?Cách khởi tạo thư viện dùng chung trên Linux
Tôi nghi ngờ rằng sẽ dễ dàng nhất để tạo đối tượng logger dưới dạng biến toàn cục và sau đó sử dụng nó từ bất kỳ tệp nguồn nào của thư viện của tôi, khai báo nó như là bên ngoài trong phần đầu. Nhưng làm thế nào tôi có thể tạo logger tự động khi một ứng dụng kết nối với thư viện?
Tôi biết rằng trong các tệp DLL cho Windows, có một thứ như REASON_FOR_CALL == PROCESS_ATTACH; có một điều tương tự trong Linux?
Điều này cũng hợp lệ cho các thư viện C. Ngoài ra còn có '__attribute __ ((destructor))' cho một hàm được gọi khi thư viện được giải nén –
... và thuộc tính này không liên quan gì đến việc xây dựng đối tượng? – einpoklum
@einpoklum, phải, điều này hầu như không liên quan đến xây dựng đối tượng. Bạn có thể sử dụng nó trong C, không có đối tượng. Điều đó nói rằng, C++ sử dụng nội bộ này để gọi các nhà xây dựng và các destructors của các đối tượng toàn cầu. –