Tôi có vấn đề sau đây: Tôi sử dụng một số lớp như sau để khởi C thư viện:liên kết tĩnh của C++
class Hello
{
public:
Hello()
{
cout << "Hello world" << endl;
}
~Hello()
{
cout << "Goodbye cruel world" << endl;
}
} hello_inst;
Nếu tôi bao gồm mã này trong một tập tin hello.cc và biên dịch nó cùng với khác tệp chứa chính của tôi(), sau đó hello_inst được tạo trước và bị hủy sau khi gọi thành main(). Trong trường hợp này, nó chỉ in một số dòng, trong dự án của tôi, tôi khởi tạo libxml qua LIBXML_TEST_VERSION.
Tôi đang tạo nhiều tệp thực thi chia sẻ nhiều mã giống nhau trong dự án cmake. Theo chủ đề này: Adding multiple executables in CMake Tôi đã tạo một thư viện tĩnh chứa mã được hiển thị ở trên và sau đó liên kết các tệp thi hành với thư viện đó. Thật không may trong trường hợp đó hello_inst không bao giờ được tạo (và libxml2 chưa bao giờ được khởi tạo). Làm cách nào để khắc phục sự cố này?
bạn có thể hiển thị tệp chính của mình không? –
Tôi không nghĩ rằng tập tin chính là quan trọng. Bằng mọi cách viết 'int main() {return 0;}' – hfhc2
Có lẽ không phải những gì bạn đang tìm kiếm, nhưng bạn có thể giữ mã khởi tạo như thế này một cách riêng biệt và sau đó biên dịch các tập tin thực thi với static + init. –