随笔-341  评论-2670  文章-0  trackbacks-0
    因为GacUI文件渐渐增多,为了让大家便于使用库,因此有下列三个选项,如果大家有空就评论,针对喜爱程度排序之:

    1、直接引用源代码。一个文件夹下有很多.h和.cpp,给出文档,告诉大家需要什么功能的时候需要引用什么东西,然后自行添加自己的工程文件。
    2、存在dll,并且对于一些因为模板的原因无法直接放进dll的功能将失去,需要使用则引用源代码。
    3、存在dll,并且使用比模板丑陋的方法来将本来使用模板做接口的功能暴露出来。
    4、只有一个.h和一个.cpp文件。我将类库通过功能切分(只有GUI,只有脚本,包含GUI和脚本和他们的互联等等若干选项),给出若干对.h和.cpp。大家选择需要的那一对添加进工程文件。这样的话,直接#include那个.h文件就直接拥有了所有功能。而且Visual C++拥有预编译头(precompiled header),可以自行将该.h和.cpp进行预编译,迅猛提高编译速度(使用stl的时候大家肯定丝毫没有感觉太多头文件带来的问题)。这样还可以分别清晰地提供windows版本和linux版本等文件对。

    我自己的倾向是使用4,因为某些原因,一旦把代码写进dll,有一些优美的模板实现的接口将被迫打散(譬如说stl,这些只是例子,我没有使用stl),所以觉得有些不爽。而且只添加两个文件(一个.h和一个.cpp),无论使用makefile还是工程文件,无论直接备份或者源码版本管理(codeplex、source forge、google code、github)都十分方便。
posted on 2011-11-23 06:22 陈梓瀚(vczh) 阅读(4135) 评论(20)  编辑 收藏 引用 所属分类: 其他

评论:
# re: C++类库使用习惯投票一则 2011-11-23 06:28 | 信息科学社
4、2、3、1  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-23 17:17 | zxjay
4213  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-23 19:22 | 装配脑袋
h + lib呢。。  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-23 19:25 | 陈梓瀚(vczh)
@装配脑袋
您不觉得lib比cpp用起来更麻烦吗,还要#pragma lib,还要写lib directory……  回复  更多评论
  
# re: C++类库使用习惯投票一则[未登录] 2011-11-23 19:36 | DJ
4123

不知为啥RSS订阅里面别人博客的内容串到你这里来了……  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-23 19:37 | 陈梓瀚(vczh)
@DJ
博客园的bug……  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-23 22:16 | XeCet
4132  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-24 01:35 | zzzz
4123  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-24 04:59 | ooseven
当然是静态库,动态库我吃过大亏!,除非是动态调用dll,如果静态调用dll的话,意味着你的所有库都需要用dll,包括mfc等。我好几年前写的程序现在几乎无法运行,也无法维护,就是因为动态库的问题。首先,mfc的dll还得去下载旧版本,这个就麻烦点,不是啥大问题,大问题在于调用到的一些其他类库的旧版本很难办,比如boost,比如xtremetoolkit...。为了回顾一下以前自己写的小程序就要折腾这些,我最后就放弃了。所以从那以后我打死也不用动态库了!不然几年以后又会遇到或者无法直接运行,或者无法直接重新编译的情况。
  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-24 06:29 | 陈梓瀚(vczh)
@ooseven
那还是4吧,给你一个cpp,直接编译进去……等同与静态库。  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-26 00:56 | ooseven
@陈梓瀚(vczh)
直接给源码是最ok了,喜欢dll的,喜欢lib的,喜欢静态调用的,喜欢动态调用的,喜欢用intel c++编译的...自己去折腾,皆大欢喜!  回复  更多评论
  
# re: C++类库使用习惯投票一则[未登录] 2011-11-26 21:11 | 姚冬
工程大到一定程度,需要引入一个make工具了,CMake QMake都不错。
GUI库是必须放到DLL的,因为用的人可能会写很大的程序,本身就分多个dll,GUI封装里不可避免会有些全局变量,那么GUI库在DLL里才容易保证全局变量的唯一性。
另外GUI里还很要解决多堆问题,就是在一个堆里分配也要回到这个堆去释放,所以要避免模块堆和线程堆的问题,用DLL就可以拥有模块内存池。
GUI里会产生大量小对象,会有内存碎片化问题导致性能问题,内存池是十分必要的。  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-27 07:16 | guest
只有一个cpp不便于源码的管理。
编译成lib,在client所属的头文件使用#pragma lib。
对于库的目录,可以设定到vc目录或者项目目录。

赞同 姚冬 关于引入make的说法,我也是写windows程序,但是对于多个vs工程确实不好管理,现在都引入脚本来进行update、build、build-install、引入资源等等工作,方便了好多。  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-27 11:05 | 陈梓瀚(vczh)
@guest
你可以把需要的工程都放进同一个solution,然后给各个工程的precompile和postcompile两个步骤分别指定脚本,就可以F5一键部署了。如果这样不够用的话,可以用MSBUILD——免去编写makefile的烦恼,可以直接编译一个工程文件。这样你就可以用脚本控制了。  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-27 11:07 | 陈梓瀚(vczh)
@姚冬
如果不是若干个程序分享同一个复杂的界面的话,dll纯属浪费。这跟程序本身的尺寸是没有关系的。如果单纯为了减少每个二进制文件的大小的话,进程占用的总内存会增大很多的。  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-28 05:06 | ooseven
编译成lib或dll完全可以交由用户来做  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-28 16:10 | phoenixbing
4213  回复  更多评论
  
# re: C++类库使用习惯投票一则 2011-11-29 07:59 | 王继
类似Boost的HPP文件,直接包含编译就可以了  回复  更多评论
  
# re: C++类库使用习惯投票一则 2015-09-16 03:53 | liulun
3、
存在dll,并且使用比模板丑陋的方法来将本来使用模板做接口的功能暴露出来。


强烈推荐第三种方法!
对于go语言、rust语言、nim语言的开发者,可以简单的封装就能使用gac的强大图形化功能,这种方法是最赞的!  回复  更多评论
  
# re: C++类库使用习惯投票一则 2015-09-16 03:58 | liulun
这种投票办法,非常不公平!!!

来着儿投票的都是C++使用者,

C语言、nim语言、rust语言、go语言的用户要想使用gaclib该怎么办啊,

轮子兄行行好,听听我们的意见.  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理