2010-01-29 24 views
26

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

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 
+6

Không có macro _GCC được xác định trước, thay vào đó hãy sử dụng '__GNUC__'. –

+2

Lưu ý về vị trí đặt macro sẽ đẹp cho những người đọc trong tương lai. – ManuelSchneid3r

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