Re: [問題] 跨 DLL 的問題

看板C_and_CPP作者 (我要加入劍道社!)時間16年前 (2009/04/02 15:44), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《legnaleurc (CA)》之銘言: : 剛剛重新翻了一下 C++ Coding Standard : 裡面有一條是說,在模組邊界如果使用std::string : 等class的話,會導致跟它接的模組也要用同一個實作品 : 用相同選項編譯,因此若為了可攜性要盡量使用低階型別 首先,C++ 沒有規定 name mangling 的方法 (即 function/variable name 對應到 object file symbol 的方式) 也沒有規定物件中的 virtual table 應該要怎麼擺 所以如果你的程式去連結不同 compiler 生出來的 library 輕則 linking error 重則 runtime error 通常不會有好下場 因此一但你選擇 C++ 開發程式 則它用到的 library 都必需用同樣的 compiler 來編 如此也可以保證這些 library 都使用同樣的 std::string 實作品 : 但是它又鼓勵使用如std::tr1::shared_ptr的資源管理物件 : 來傳遞給其他DLL,這不就代表客戶也必須要使用同一份實作? 是的 這世界並不美好 : 是否這是在"可攜性"和"正確刪除物件"之間的取捨? 如果你需要跨 compiler 的可攜性 光是「盡量使用低階型別」還不夠 事實上不要用 C++ 才能達到跨 compiler 的可攜性 (而且如 zxvc 所說,即使用 C 還是很容易踩到地雷) 大部份的情況我還是會用 C++ 啦 我寧可花時間重編 library 也不要花時間 debug -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.113.79 ※ 編輯: littleshan 來自: 59.121.113.79 (04/02 23:45)

04/02 23:47, , 1F
我對compiler運作不了解,所以差別是在lib跟dll無關?
04/02 23:47, 1F

04/03 00:30, , 2F
問題應該是在ABI沒統一,所以實際上還是要發佈
04/03 00:30, 2F

04/03 00:30, , 3F
所有相關的模組 .... 這世界真的很不美好= =
04/03 00:30, 3F
文章代碼(AID): #19rDr3YJ (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
8
34
完整討論串 (本文為第 2 之 3 篇):
問題
8
34
文章代碼(AID): #19rDr3YJ (C_and_CPP)