簡體   English   中英

如何編寫和 package 使用模板的 C++ 庫

[英]How to write and package a C++ library which uses templates

由於必須在 header 文件中定義/實現模板,我們 go 鑒於我們不想共享源代碼,我們如何打包這樣的庫?

您可以轉發聲明模板專業化並從您的 dll 導出它們,但僅限於一組特定的類型。

一種替代方法是利用類型擦除。 在這里,您的公共標頭是模板化的,但它們會轉換為非模板代碼。

例如,您可以編寫一個庫來對極其靈活的格式進行圖像處理。 用戶提供位深度以及通道的含義和順序(加法、線性、多重透明度等)。

您存儲通道信息並創建字節的平面緩沖區,並且在庫構建內部有足夠的 stufd 來處理所有組合,而無需使用模板“交叉 ABI”。

這可能會變得荒謬極端。 例如,Skia 有着色器,您可以在運行時提供 SkSL 字符串,它可以交叉編譯為您選擇的 GPU 或基於 CPU 的圖像處理,然后生成可執行代碼,在緩沖區上運行、優化。 Skia 不允許自定義緩沖區布局,但沒有什么可以從根本上阻止它。

所有這些都是先進而晦澀的。 最簡單的模板庫只有 header,可能還有 kernel 的非模板代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM