physx物理引擎,windows,c++,預編譯,vs工具鏈

c++庫的編譯和連接使用,確實是巨坑c++

##主要緣由:windows

c++ 大量依賴預編譯選項 和 預編譯宏開關函數

跨平臺庫,有大量的配置須要調整工具

c++的外部依賴不明確,沒有顯式標註debug

windwos的靜態庫和動態庫 有大量的的dllimport dllexport 之類的定義設計

頭文件同時供庫自身和外部使用着同時調用,致使有各類宏的奇技淫巧指針

##從physx庫自己來看:接口

physx被拆分爲多個庫,有的編譯爲靜態庫,有的爲動態庫,庫之間的依賴關係難於直觀看到編譯

windows動態庫連接靜態庫,要求兩個庫有相同的c運行庫,mutlthread debugger dll 之類的選項,不一樣的依賴,致使沒法連接thread

dllimport dllexport 之類的區分 致使c函數名字變化,連接時纔出錯

連接出的dll 的外部依賴,須要第三方工具分析

功能裁剪,須要對代碼進行分析,找到影響功能的宏

致使c++庫修改和編譯很是緩慢,效率很低

#c++設計問題

缺乏模塊概念,頭文件和庫文件分離

動態庫和靜態庫 概念分離,致使使用不便

windows下接口名字會由於 dllexport 而修改

連接依賴關係不明顯

大量濫用預編譯宏

頭文件行爲受到宏影響多變,致使庫和庫使用者之間不一致

head file 頭文件地獄,永遠找不到應該include哪一個頭文件

非指針類型不能向前引用

頭文件不單單是公開API 還包括大量私有實現細節

二進制內部結構一無所知,對編譯出來的 dll沒法清晰的知道,其中究竟包含了什麼內容

相關文章
相關標籤/搜索