随笔分类 -  C++

摘要:1、 DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。 静态链接库与动态链接库的区别: (1)静态链接库与动态链接库都是共享代码的方式。静态链接库把最后的指令都包含在最终生成的EXE文件中了;动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。 (2)静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。 动态链接库的分类:Visual C++支持三种DLL,它们分别是: (1)Non-MFC D 阅读全文
posted @ 2011-07-22 14:59 忧郁的加菲猫 阅读(12037) 评论(1) 推荐(5) 编辑
摘要:通过GetProcAddress函数动态调用dll中的函数,是否必须通过extern "C"声明导出函数? [已结贴,结贴人:darongtou]如题,网上搜了N多资料,一直找不到确定的答案,目前我的答案是“是”。晚上因为一个程序,好好研究了一下。很多资料上都只是说明“如果没有 extern "C" 修饰,输出函数仅仅能从 C++ 代码中调用。”却并没有明确这个调用是通过显式调用还是隐式调用,我也一直没有看到过有代码是通过显示调用没有 extern "C" 修饰的导出函数。MSDN上也只是说The spelling and case 阅读全文
posted @ 2011-07-22 09:49 忧郁的加菲猫 阅读(6969) 评论(0) 推荐(0) 编辑
摘要:第一章的sample1,文中提到由于windows底层代码基本上是用c语言编写的,因此新工程里的CPP文件要改为C文件。 但是在编译时出现错误fatal error C1853: "debug/1_1.pch" is not a precomplied header file with this complier...... 这个问题还真是头一次遇到,怎么办?百度一下,解决办法如下: 错误原因: 该错误是因为当项目中混合了 .cpp 和 .c 文件时,编译器会对它们采取不同的编译方式(主要是因为对函数声明的处理方式不同),因而不能共用一个预编译头文件。 在 VC++ 中,默 阅读全文
posted @ 2011-07-22 09:37 忧郁的加菲猫 阅读(1968) 评论(0) 推荐(0) 编辑
摘要:DLL的export是指将DLL中的函数和数据输出到其它程式中,以供其使用。DLL的import是指使用DLL的程式引入DLL中的函数和数据。DLL的exportDLL 中包含有一个表,称为export table(以下简称ET),其中包含了DLL中可以被外部程式使用的所有函数和数据的名字。只有记录在ET中的函数和数据才可以被外部程式所使用(如果 没有.DEF文件的话),其它所有没有记录在ET中的函数和数据都被视为是DLL私有的。因此,要将DLL中的函数和数据export只有两个方法:1、为DLL创建一个.DEF文件(模块定义文件),并在build该DLL时使用这个.DEF文件。使用这种方法使 阅读全文
posted @ 2011-07-21 15:58 忧郁的加菲猫 阅读(7705) 评论(0) 推荐(0) 编辑
摘要:符合ANSI的预定义宏:__DATE__:表示当前源文件编译时的日期,格式为:月/天/年(Mmm dd yyyy)。__FILE__:表示当前正在处理的源文件名称。__LINE__:表示当前正在处理的源文件的行,可以用#line指令修改。__STDC__:表示是ANSI C标准。只有在编译器选项指定了/Za,并且不是编译C++程序时,被定义为常整数1;否则未定义。__TIME__:表示当前源文件的最近编译时的时间,格式为:小时/分/秒(hh:mm:ss)。__TIMESTAMP__:表示当前源文件的最近修改日期和时间,格式为:Ddd Mmm dd hh:mm:ss yyyy,其中Ddd是星期的 阅读全文
posted @ 2011-07-07 11:47 忧郁的加菲猫 阅读(6081) 评论(1) 推荐(2) 编辑
摘要:1、VC编译选项 多线程 (/MT) 多线程调试 (/MTd) 多线程 DLL (/MD) 多线程调试 DLL (/MDd)2、C 运行时库 库文件 Single thread(static link) ML libc.lib Debug single thread(static link) MLd libcd.lib MultiThread(static link) MT libcmt.lib Debug multiThread(static link) MTd libcmtd.lib MultiThread(dynamic link) MD msvcrt.lib Debug multiTh 阅读全文
posted @ 2011-07-07 11:43 忧郁的加菲猫 阅读(1474) 评论(0) 推荐(1) 编辑
摘要:<C++标准函数库>中说的有三个函数可以将字符串的内容转换为字符数组和C—string 1.data(),返回没有”\0“的字符串数组 2,c_str(),返回有”\0“的字符串数组 3,copy().................................................................int 转 CString: CString.Format("%d",int);.................................................................string 转 CStri 阅读全文
posted @ 2011-07-07 09:54 忧郁的加菲猫 阅读(655) 评论(0) 推荐(2) 编辑
摘要:error C2146: syntax error : missing ';' before identifier 'PVOID64'原因:由 directdraw 的升级引起,POINTER_64是一个宏,在64位编译下起作用,它包含在SDK目录下的BASETSD.H中(Microsoft Visual Studio 8\VC\PlatformSDK\Include\basetsd.h(23):... 阅读全文
posted @ 2010-09-29 17:33 忧郁的加菲猫 阅读(4852) 评论(0) 推荐(0) 编辑
摘要:摘要:  本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元)1.概念  在 C/C++... 阅读全文
posted @ 2010-09-16 15:42 忧郁的加菲猫 阅读(1354) 评论(1) 推荐(1) 编辑
摘要:一、预定义__GNUC__宏 1 __GNUC__ 是gcc编译器编译代码时预定义的一个宏。需要针对gcc编写代码时, 可以使用该宏进行条件编译。 2 __GNUC__ 的值表示gcc的版本。需要针对gcc特定版本编写代码时,也可以使用该宏进行条件编译。 3__GNUC__ 的类型是“int”,该宏被扩展后, 得到的是整数字面值。可以通过仅预处理,查看宏扩展后的文本。示例:... 阅读全文
posted @ 2010-09-05 16:49 忧郁的加菲猫 阅读(14920) 评论(1) 推荐(0) 编辑
摘要:LARGE_INTEGERLARGE_INTEGER是union;用于表示一64位有符号整数值.其他定义如下: typedef union _LARGE_INTEGER { struct { DWORD LowPart; LONG HighPart; }; LONGLONG QuadPart; } LARGE_INTEGER; 如果你有编译器直接支持64位整数可以直接使用QuadPa... 阅读全文
posted @ 2009-09-17 09:20 忧郁的加菲猫 阅读(16771) 评论(0) 推荐(1) 编辑
摘要:文件文件的基本概念  所谓“文件”是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。  普通文件是指驻留在磁... 阅读全文
posted @ 2009-08-08 15:55 忧郁的加菲猫 阅读(54382) 评论(3) 推荐(14) 编辑