能否把高版本的libstdc 靜態連線到乙個只暴露純C介面的動態庫中,給低版本c 程式呼叫?

時間 2021-05-08 01:23:52

1樓:楊二寶

你用4.8剛好是C++11的核心特性完全支援的版本,其實GCC對11規範的標準庫的完全支援我記得好像是5.0版本吧

你這個方法是可以的,我這樣處理過,有個事情你最好處理下,就是完全不給對方暴露你在自己庫裡面分配的記憶體,有什麼需要new的讓對方傳入他已經分配好的指標進來你操作都好,他自己釋放資源

前面有個答主也說到你靜態lib裡面new的需要你公開個介面把他delete,意思是new和delete在同一方做,我的做法是全部由呼叫方維護,,這種情況下你不能控制呼叫的人的行為

2樓:「已登出」

當然可以

學下微軟的COM就好了,跨語言都可以

ps: @姚冬 提到的記憶體問題)

3樓:姚冬

一般情況沒問題,有乙個問題要注意下:

你這個庫裡面分配的記憶體一定要回到這個庫裡面去釋放。

因為不同的版本的lib的分配器之間不保證完全相容。

比如,你某個函式返回乙個字串指標,如果由呼叫者free,可能會出問題。

4樓:

可以的。對呼叫方來說只看得到你暴露的介面,其它的都是看不到也不會衝突的。

如果你的客戶的機器上有c++11的庫,你甚至不需要靜態鏈結它。你的客戶的程式和你的動態庫可以使用不同的c++庫。

事實上,作業系統當中那麼多庫,不可能都是使用的同乙個版本的c/c++庫。混合使用是很常見的。

wordpress怎麼使用高版本的PHP?

lightingwalker 不知道你使用的伺服器是不是apache2的,如果是的話,需要修改apache2的配置檔案vim httpd.conf,查詢LoadModule這一行,把LoadModule php7 module後面的檔案位置直接指向你的php7.3版本所在的目錄下的libphp7.s...

崩壞3中沒有版本之子能否憑技術和初級a的搭配在深淵達到紅蓮水平

darktemplar 可以但輔助需要至少神恩和熾翎 雲墨非剛需 迅雷 雷八 和a希必須畢業火傷真紅 幽蘭戴爾 冰傷鴨子 無a級替代 我紅蓮保級從來不用黑希 沒聖痕 憂藍幽蘭 適合物理角色的天氣全初始a陣容有山聖希,山聖白,反正就是山聖帶個主c,但是元素隊伍熾翎或者雲墨是硬需求。除此之外,裝備要求也...

為什麼高版本的編譯器在使用calloc的時候有類似呼叫建構函式的環節,但是malloc始終沒有?

正如 Milo Yip 大佬所說,對於非pod型別,它們可能有自己的建構函式,虛表等,不能單用malloc這樣粗暴的方法,應該通過c 關鍵字new來使它初始化,它不僅僅構造物件,同時也構造虛表 如果有的話 乙個常見的問題是,vs下有人經常會ZeroMemory清空乙個容器,如vector,容器依舊可...