iuhsihsow
如何写DLL(C++)

很久以前,刚入职的时候,什么都不懂,有同事教了下怎么写dll,然后自己开始慢慢接触dll君。感谢当初与我分享该方面知识的hzc同学(貌似是一个周六上午)。

所以也想和大家分享一下。

iuhsihsow个人心得。

做稍微大一点的工程就不能不接触Dll了,将自己写的一些相对独立的,比较基础的,功能需求稳定的模块写成动态库,会减少后期很多工作量。

优点如下:

1.利于修改,无需重新编译整个工程。

2.利于复用,写个算法库什么的,到处用。(话说准备写一个图像方面的算法库的,结果拖着拖着就没有动力了。)

3.减少EXE大小。。。囧。。

缺点如下:

1.dll版本控制,需要在写dll的用点心。

2.增加了额外的工作量,也就是多几行代码,多配置几行。

环境。。VS2008 C ++ windows操作系统

liunx不讨论,平时用得不多,学了之后就忘了。

1.创建工程

新建工程->C++控制台->Dll

2.配置

配置属性->

常规->输出目录 dll的输出目录

C/C++->附加包含目录 项目中头文件一般放的地方

链接器->常规->

输出文件 dll的输出路径

附加库目录 第三方库

高级-> 导入库 生成的库的名字如$(ProjectDir)..\..\..\..\lib\$(TargetName).lib

生成事件->生成后事件->命令行 用于生成成功后copy源文件 例如copy Base\*.h $(ProjectDir)\..\..\..\..\include\

3.各种头文件

3.1.引用头文件

为了方便引用,一般定义一个头文件,里面包括了库的导入导出属性,库中需要引用的各个类,第三方库。如

# ifdef XXXXX_EXPORTS

# define XXXXX _API __declspec( dllexport )

# else

# define XXXXX _API __declspec( dllimport )

# ifdef _DEBUG

# pragma comment(lib, " XXXXX D.lib")

# else

# pragma comment(lib, " XXXXX .lib")

# endif

# endif

#include " XXXXXDefine.h"

#include " XXXXX .h"

XXX为自己的工程名,XXX_EXPORTS为预编译头,可以去属性中设置

3.2数据头

将自己定义的数据放在一个头文件中可以保持一致性,用起来很方便

3.3预编译头

放些工程中引用很多的东西,<windows.h>引用的第三方库,本工程常用的头文件。等等,看各人习惯好坏了。

4.导出类

写好类后,在类前面加个 XXXX_API,这个在前面有定义过。

5.可以使用DEPENDS.EXE检测库。

6.使用自己写的库

引用头文件,dll放在客户程序能够读到得地方,就能用了。。。。

上班时间,简单写写,无图。

iuhsihsow
为什么要保持研究

部分内容摘自【别做“留级生”】,红字标示。

在著名的脱口秀广播节目《冬吴相对论》中,主持人梁冬和吴伯凡多次谈到一个“留级生心态”的问题

如果我们不刻意加以注意和内省,就极容易让自己在一天天碎片化的阅读、在重复的事情中耗费大量的时间,其实我们本身并没有多大的进步,只不过是将一个经验反复使用了多年而已。

其结果就是我们“留级”了,成为自己都不知道的“留级生”,慢慢地与这个时代在脱节,最后只能靠年龄与职位来“色厉内荏”地创造出别人其实不屑一顾的权威。

很多人的能力其实是在不知不觉中定型的,譬如学习的能力,绝非两个字那么简单。在工作中能够安安静静沉下心来,系统地学习某一项知识和技能(不管它暂时有用与否),其实大部分人都办不到。

觉得自己还不错,老办法一抓就灵,也就不再去想怎么从心智和能力上去提高自己了;也许只有在一个人清醒的时候会自我怀疑:我做的这些有意义吗?我自己的工作有价值吗?然后便会惊出一身冷汗。

如果不注意提升自己,很多人会糟糕地发现,自己并不具备面对低潮的足够知识储备和应付能力。

保持研究,不断的接触新的东西,产生新的想法才能进步,反复低水平的工作只会落后于时代。#6675!

ID:L1
我就是这样经常学了东西
展开Biu

我就是这样经常学了东西。。学成了感觉一无是处。。犹如上小学 初 高中 大学毕业 工作 完全无用。工作换了工作东西又没用了。。

工作对我来说就是浪费生命。。维持生存的东西。。。

[查看全文]
iuhsihsow
吐槽一下。。。自己真纠结

本帖最后由 iuhsihsow 于 2012-10-9 15:40 编辑

早上修改一个bug,然后就是噩梦的开始了。。

bug没有修改彻底,一个异常过后,数据貌似被修改了,导致数据不可读。

分析数据库中同类数据,猜测那个部分出问题。

从数据库中取出该数据,发现数据使用项目组的包装过的zlib压缩了。

到处找zlib源码以及项目组的压缩方式,折腾了快两个小时后,终于找到了当时的实现方式。

写了个控制台程序来生成压缩文件,各种bug。。。

各种测试后才发现,各种第三方库的版本都不对。

到处找库,然后替换库,重新编译程序。

使用编译的程序将数据解压,并修改了那个数字。

再压缩,放到数据库中。

再读数据。。发现可用了。。。

真纠结~!!!

开始继续改那个bug。#7206!

早点把重要数据备份下不行吗~骚年~~!!!!(何况数据就900K)

iuhsihsow
是一门艰苦卓绝的学问
展开Biu

CyberZHG 发表于 2012-10-9 17:08

WZ

挽尊,是一门艰苦卓绝的学问。在广大的网民身体力行之下,已经被证明是有实际意义的行为。他需要的,不仅仅是对个人观点的表达,说好话去迎合楼主;也不是刻意化身诤友,用当头棒喝唤醒一个迷乱的灵魂;更不是随心所欲,用自己的世界观妄图强加于楼主之上,从而实现同化式的征服型拯救。

因为挽尊源于生活,又高于生活。#7126!

摘自百度百科。

[查看全文]
CyberZHG
ID:L1
日记2012年10月5日 第七八天

本帖最后由 ID:L1 于 2012-10-6 14:12 编辑

C++中了。。。有没什么收获和进步。。

ID:L1
日记2012年10月4日 第七七天

老样子看样子还是要继续休息。。

想折腾却又没折腾。想找个没完没了的东西

结果老是一休息。。。一天就这样无痛无痒结束了

哎。。。

ID:L1
日记2012年10月3日 第七六天

今天又什么没干就。一天过去了。

本来觉得有学不完的东西也不错

学累就可以休息睡了

但是悲剧发现现在什么都想干

一休息一天有过了。。

这是什么节奏。

ID:L1
日记2012年10月2日 第七五天

突然发现好没激情 不知道什么东西可以激情无限的。。。

C++可以吗。。。

moxiagy
还没有学习脚本语言
展开Biu

还没有学习脚本语言。。

[查看全文]
iuhsihsow
但是用脚本不多的
展开Biu

惯用C++的,但是用脚本不多的,表示脚本语言应该会很激情。#7077!

[查看全文]
ID:L1
日记2012年9月30日 第七四天

节日让我从一种悲剧解放又坠入节日悲剧。。。被忙

不过又能从新挤时间学习了。。之前学的全忘记差不多。。。$76$