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没法清晰的知道,其中究竟包含了什么内容