什么是CRunTime?
3个回答
展开全部
运行期库是一个广泛的概念,可以认为是一套系统级的函数库,这些函数要么在后台被使用,比如进行程序的初始化和清理操作,要么是我们会直接调用到的,比如内存管理中的malloc、数学计算中的sqrt等,所谓运行期,就是在程序运行时使用,离开了它,我们的程序寸步难行.
在Windows平台下,C Runtime Library 的情况如下:
动态连接库 导出库文件 静态连接库
Release msvcrt.dll msvcrt.lib libc.lib(单线程), libcmt.lib(多线程)
Debug msvcrtd.lib msvcrtd.lib libcd.lib(单线程),libcmtd.lib(多线程)
CRuntimeClass是MFC实现的RTTI(运行时类型信息),MFC中的很多类需要由框架动态创建(比如文档、视图、框架窗口类等等),所以从CObject继承的类如果需要这种能力,必须实现它的CRuntimeClass,包括CreateObject静态方法(这个方法简单调用new CMyClass)。而做到这个很简单,使用DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC宏就自动拥有这个特性,看看这两个宏的定义就能理解其原理。
CRuntimeClass在MFC中定义为一个数据结构,在文件AFX.H中声明,它是用来串起MFC从COBJECT继承下来的所有类(相当于一根绳,只要你牵住绳的一头你就可以得到绳上的所有数据),你也可以把你自己写的类加入这根绳。
每个从CObject中派生的类都有一个CRuntimeClass对象同它关联以完成在运行时得到类实例的信息或者是它的基类。
在Windows平台下,C Runtime Library 的情况如下:
动态连接库 导出库文件 静态连接库
Release msvcrt.dll msvcrt.lib libc.lib(单线程), libcmt.lib(多线程)
Debug msvcrtd.lib msvcrtd.lib libcd.lib(单线程),libcmtd.lib(多线程)
CRuntimeClass是MFC实现的RTTI(运行时类型信息),MFC中的很多类需要由框架动态创建(比如文档、视图、框架窗口类等等),所以从CObject继承的类如果需要这种能力,必须实现它的CRuntimeClass,包括CreateObject静态方法(这个方法简单调用new CMyClass)。而做到这个很简单,使用DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC宏就自动拥有这个特性,看看这两个宏的定义就能理解其原理。
CRuntimeClass在MFC中定义为一个数据结构,在文件AFX.H中声明,它是用来串起MFC从COBJECT继承下来的所有类(相当于一根绳,只要你牵住绳的一头你就可以得到绳上的所有数据),你也可以把你自己写的类加入这根绳。
每个从CObject中派生的类都有一个CRuntimeClass对象同它关联以完成在运行时得到类实例的信息或者是它的基类。
展开全部
运行期库是一个广泛的概念,可以认为是一套系统级的函数库,这些函数要么在后台被使用,比如进行程序的初始化和清理操作,要么是我们会直接调用到的,比如内存管理中的malloc、数学计算中的sqrt等,所谓运行期,就是在程序运行时使用,离开了它,我们的程序寸步难行.
在Windows平台下,C Runtime Library 的情况如下:
动态连接库 导出库文件 静态连接库
Release msvcrt.dll msvcrt.lib libc.lib(单线程), libcmt.lib(多线程)
Debug msvcrtd.lib msvcrtd.lib libcd.lib(单线程),libcmtd.lib(多线程)
在Windows平台下,C Runtime Library 的情况如下:
动态连接库 导出库文件 静态连接库
Release msvcrt.dll msvcrt.lib libc.lib(单线程), libcmt.lib(多线程)
Debug msvcrtd.lib msvcrtd.lib libcd.lib(单线程),libcmtd.lib(多线程)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
-_-~体力活
看一下RTTI相关
看一下RTTI相关
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询