Điều này #pragma comment
có nghĩa gì sau đây?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Điều này #pragma comment
có nghĩa gì sau đây?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Câu trả lời:
#pragma comment
là một lệnh biên dịch chỉ ra Visual C ++ để lại nhận xét trong tệp đối tượng được tạo. Nhận xét sau đó có thể được đọc bởi trình liên kết khi nó xử lý các tệp đối tượng.
#pragma comment(lib, libname)
nói với trình liên kết thêm thư viện 'libname' vào danh sách các phụ thuộc thư viện, như thể bạn đã thêm nó vào thuộc tính dự án tại Linker->Input->Additional dependencies
Xem #pragma nhận xét về MSDN
Tôi đã luôn gọi chúng là "chỉ thị trình biên dịch." Họ chỉ đạo trình biên dịch thực hiện mọi việc, phân nhánh, bao gồm các lib như được hiển thị ở trên, vô hiệu hóa các lỗi cụ thể, v.v., trong giai đoạn biên dịch.
Các công ty biên dịch thường tạo các phần mở rộng của riêng họ để tạo điều kiện cho các tính năng của họ. Ví dụ: (tôi tin) Microsoft đã bắt đầu thỏa thuận "#pragma một lần" và nó chỉ có trong các sản phẩm của MS, bây giờ tôi không chắc lắm.
Chỉ thị thực dụng Nó bao gồm "#pragma bình luận" trong bảng bạn sẽ thấy.
HTH
Tôi nghi ngờ GCC, ví dụ, có bộ # pragma của riêng họ.
#pragma comment
là gì .
Các chỉ thị thực dụng chỉ định các tùy chọn trình biên dịch của hệ điều hành hoặc máy cụ thể (x86 hoặc x64, v.v.). Có một số tùy chọn có sẵn. Thông tin chi tiết có thể được tìm thấy trong https://msdn.microsoft.com/en-us/l Library / d9x1s805.aspx
#pragma comment( comment-type [,"commentstring"] )
có định dạng này.
Tham khảo https://msdn.microsoft.com/en-us/l Library / 7f0aews7.aspx để biết chi tiết về các loại nhận xét khác nhau.
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Các dòng mã trên bao gồm tên thư viện (hoặc đường dẫn) cần được tìm kiếm bởi trình liên kết. Các chi tiết này được bao gồm như một phần của bản ghi tìm kiếm thư viện trong tệp đối tượng.
Vì vậy, trong trường hợp này kernel.lib
và user32.lib
được tìm kiếm bởi trình liên kết và được bao gồm trong tệp thực thi cuối cùng.
Các câu trả lời và tài liệu do MSDN cung cấp là tốt nhất, nhưng tôi muốn thêm một trường hợp điển hình mà tôi sử dụng rất nhiều yêu cầu sử dụng #pragma comment
để gửi lệnh đến trình liên kết tại thời điểm liên kết chẳng hạn
#pragma comment(linker,"/ENTRY:Entry")
nói với trình liên kết để thay đổi biểu mẫu điểm WinMain()
vào Entry()
sau đó CRTStartup
sẽ chuyển điều khiển sangEntry()
Linker -> General -> Additional Library Directories
)?