簡介
匯出包含來自🎜>簡介
匯出包含來自🎜>簡介
匯出包含來自DLL 的向量和字串等複雜物件的類別引起了有關DLL 介面要求的擔憂。本文分析了這個問題,並探討了在解決編譯器警告的同時導出此類類別的解決方案。
編譯器警告
當嘗試匯出包含 std:: 物件的類別時,編譯器可能會發出有關需要 DLL 介面的成員的警告。這些警告表示編譯器無法確保導出類別的方法可供使用 DLL 的客戶端使用。
轉送聲明
解決這些警告的一種方法是使用使用 DLL_EXPORT 轉送宣告。雖然這可能會抑制警告,但它實際上並沒有導出所需的方法。要完全解決此問題,包含 std:: 物件的類別必須在其編譯單元中標記為 DLL_EXPORT。
成員可存取性
並非所有導出的成員類別需要是 DLL_EXPORT。客戶端無法存取的私有成員可以被忽略或停用其警告。但是,客戶端可能與之互動的成員必須導出其方法。
停用警告:
禁用警告:對於不可導出的成員,可以停用警告以避免混亂。 DLL 匯出包裝器: 為需要匯出的成員建立 DLL 匯出包裝器函數或間接方法。 PIMPL 習慣用法: 利用PIMPL 慣用法減少外部可見的數量轉發聲明和實例化 >使用DLL_EXPORT 轉送聲明模板類別確實會在目前編譯單元中建立實例化。但是,這僅適用於模板特化,不適用於具體類,具體類別需要明確標記為 DLL_EXPORT。
以上是如何從 DLL 匯出包含 `std::` 物件的類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!