boost的编译问题??

rwxybh 2005-12-06 12:37:04
使用过的都知道boost需要首先编译成若干DLL,而后方可使用.
但是为何需要先编译呢,有些直接引用头文件就可使用,但是有些库必须编译

那么这编译和不编译之间的本质区别在什么地方呢??
请高手指点,谢谢
...全文
401 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rwxybh 2005-12-12
  • 打赏
  • 举报
回复
来者有分,呵呵
yuanchuang 2005-12-06
  • 打赏
  • 举报
回复
我不知道boost是什么,嘻嘻。
头文件是系统给的静态库,你自己定义的头文件就要编译成静态库才能用,所以要编译
不知这是不是你要的答案。
积木 2005-12-06
  • 打赏
  • 举报
回复
共享库 .dll就是为了这个而生的。如果你的编译目标是共享版本那就没有问题,但是如果你使用静态链接那就完了。每个编译器的静态链接库的编译方法都不一样。。。
你只好针对不同的版本编译不同的lib....
rwxybh 2005-12-06
  • 打赏
  • 举报
回复
多谢版主回答,我正在想如何不预先编译boost而直接引用就能使用,这样看上去编译时满了,但是不用在切换编译器的时候更换库的版本了,而且库版本众多极易搞混

不知道boost能不能这么用??就目前来看,还是太麻烦了
积木 2005-12-06
  • 打赏
  • 举报
回复
你说的使者个意思吗:编译为lib和dll只是可选的,不编译也可直接引用源码,只不过编译效率低而已.
也就是说boost的库可以直接引用,而不是必须编译(可能需要在源码上略作修改)
===============================================================================
可以象你说得那么理解,这都是看你自己的选择…… :)

编译成库是为了提高效率,而编译成.dll或者.so是为了提高代码的可插拔性,例如一些常用的库,你不是打算每一个工程都从底层库的编译开始吧。所有的这一切都说明了库是非常重要的,我认为boost应该尽可能的编译成库的形式给大家使用,但是以现在的情况,是非常难的,可以说几乎不可能。

rwxybh 2005-12-06
  • 打赏
  • 举报
回复
嗯?我什么时候说模板一定要预编译才能用?事实上你根本就没有办法预先编译模版啊。那会有链接错误的。
因为boost大量使用了模版,所以很多组件根本就不需要编译,直接引用头文件就可以用了,那是因为代码就在头文件里面嘛,但是这样做好吗?我想没有一个程序员愿意每天都重新编译一次底层的库吧。更不愿意自己的程序里面包含了很多可能永远用不上的代码吧(特指没有动态链接的情况)。
所以lib和dll程度越高,这个库的可用性就回相对提高。这样节省开发时间,节省运行开销。
===============================================================================
你说的使者个意思吗:编译为lib和dll只是可选的,不编译也可直接引用源码,只不过编译效率低而已.
也就是说boost的库可以直接引用,而不是必须编译(可能需要在源码上略作修改)
积木 2005-12-06
  • 打赏
  • 举报
回复

使用模板不一定非得编译才能用,比如A写一个加法模板,B直接引用A的头文件即可,并不一定非得把A的模板编译以后B才能用,而像Boost的Thread库必须编译才能使用
这不是本质所在

========================================================================

嗯?我什么时候说模板一定要预编译才能用?事实上你根本就没有办法预先编译模版啊。那会有链接错误的。
因为boost大量使用了模版,所以很多组件根本就不需要编译,直接引用头文件就可以用了,那是因为代码就在头文件里面嘛,但是这样做好吗?我想没有一个程序员愿意每天都重新编译一次底层的库吧。更不愿意自己的程序里面包含了很多可能永远用不上的代码吧(特指没有动态链接的情况)。
所以lib和dll程度越高,这个库的可用性就回相对提高。这样节省开发时间,节省运行开销。
rwxybh 2005-12-06
  • 打赏
  • 举报
回复
怎么不见高手来回答啊??
rwxybh 2005-12-06
  • 打赏
  • 举报
回复
在boost中,很多代码都是用模版写的。所以都写在了头文件里面根本不需要编译苦就可以使用。实际上我觉得这是一种无奈之举,因为这样大大增加了编译器的负担,你也不想编译一个程序动辄20分钟吧。
但是很多库并不是模版写的,这就很好,用预先编译好的模块,如果用动态链接就更好了,我运行时的消耗都小了。何乐而不为。
=========================================================================
使用模板不一定非得编译才能用,比如A写一个加法模板,B直接引用A的头文件即可,并不一定非得把A的模板编译以后B才能用,而像Boost的Thread库必须编译才能使用
这不是本质所在
积木 2005-12-06
  • 打赏
  • 举报
回复
在boost中,很多代码都是用模版写的。所以都写在了头文件里面根本不需要编译苦就可以使用。实际上我觉得这是一种无奈之举,因为这样大大增加了编译器的负担,你也不想编译一个程序动辄20分钟吧。
但是很多库并不是模版写的,这就很好,用预先编译好的模块,如果用动态链接就更好了,我运行时的消耗都小了。何乐而不为。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧