Có một ký hiệu tương đương với mã số __declspec(dllexport)
của Linux để xuất một cách rõ ràng một hàm từ thư viện được chia sẻ không? Đối với một số lý do với chuỗi công cụ tôi đang sử dụng, các hàm không phải là thành viên lớp không xuất hiện trong tệp thư viện được chia sẻ kết quả.Xuất các hàm thư viện được chia sẻ rõ ràng trong Linux
26
A
Trả lời
53
__attribute__((visibility("default")))
Và không có tương đương __declspec(dllimport)
với kiến thức của tôi.
#if defined(_MSC_VER)
// Microsoft
#define EXPORT __declspec(dllexport)
#define IMPORT __declspec(dllimport)
#elif defined(__GNUC__)
// GCC
#define EXPORT __attribute__((visibility("default")))
#define IMPORT
#else
// do nothing and hope for the best?
#define EXPORT
#define IMPORT
#pragma warning Unknown dynamic link import/export semantics.
#endif
24
http://gcc.gnu.org/wiki/Visibility
Đây là một hướng dẫn đầy đủ về xuất khẩu trong cả msvc và gcc.
Các vấn đề liên quan
- 1. Thư viện được chia sẻ Linux C++
- 2. Tách thư viện chia sẻ linux
- 3. Tự động tải các thư viện được chia sẻ Linux?
- 4. Makefile cho Thư viện được chia sẻ?
- 5. Cách gọi hàm từ thư viện được chia sẻ?
- 6. Thư viện được chia sẻ: Phương pháp Windows vs Linux
- 7. Thư viện được chia sẻ trong Go?
- 8. Tìm địa chỉ tải của một thư viện được chia sẻ trong Linux
- 9. Trộn các thư viện tĩnh và thư viện chia sẻ
- 10. Các thư viện được chia sẻ tùy chọn
- 11. Biến toàn cầu trong thư viện/dll được chia sẻ, được chia sẻ qua quá trình
- 12. Thư viện được chia sẻ C++ được gọi từ C
- 13. dlopen với hai thư viện được chia sẻ, xuất các ký hiệu
- 14. Làm thế nào để chia sẻ các biến toàn cầu trong một thư viện được chia sẻ (.so) trong các trường hợp của cùng một quá trình sử dụng thư viện được chia sẻ trong Linux?
- 15. Nhiều trường hợp singleton trên các thư viện được chia sẻ trên Linux
- 16. Liên kết thư viện được chia sẻ bằng gcc
- 17. linux g ++ liên kết 64 bit mã thư viện chia sẻ với thư viện tĩnh
- 18. Xây dựng thư viện được chia sẻ liên kết với thư viện chia sẻ không chuẩn khác
- 19. Có tệp .def tương đương trên Linux để kiểm soát các tên hàm đã xuất trong một thư viện được chia sẻ không?
- 20. C++ Thư viện được chia sẻ liên kết tĩnh
- 21. Cách chia sẻ biến trong thư viện đối tượng được chia sẻ
- 22. Linux: Cách nhúng thông tin phiên bản vào thư viện được chia sẻ và nhị phân?
- 23. Liên kết với thư viện được chia sẻ với CMake trên Linux
- 24. Không gian bộ nhớ thư viện được chia sẻ
- 25. Có thể nhận được chữ ký của hàm trong thư viện được chia sẻ theo chương trình không?
- 26. GHCi không hoạt động với khai báo xuất khẩu FFI/thư viện được chia sẻ
- 27. C++: dlclose không dỡ bỏ thư viện được chia sẻ
- 28. Thư viện chia sẻ màn hình
- 29. Thư viện được chia sẻ tự động và tiêu chuẩn
- 30. Cách gỡ lỗi tải thư viện được chia sẻ
Không có macro _GCC được xác định trước, thay vào đó hãy sử dụng '__GNUC__'. –
Lưu ý về vị trí đặt macro sẽ đẹp cho những người đọc trong tương lai. – ManuelSchneid3r