WEB开发网
开发学院软件开发VC 使用 LIBCTINY.LIB 为 EXE 和 DLL 文件 减肥 阅读

使用 LIBCTINY.LIB 为 EXE 和 DLL 文件 减肥

 2007-03-17 21:26:43 来源:WEB开发网   
核心提示: LIBCTINY: 最小的运行库现在你明白为什么一个简单的 EXEs 和 DLLs 有如此大了,也是时候介绍我的运行库了,使用 LIBCTINY.LIB 为 EXE 和 DLL 文件 减肥(4),在 October 1996 column,我建立了一个静态的 .LIB 文件代替微软的 LI

LIBCTINY: 最小的运行库

现在你明白为什么一个简单的 EXEs 和 DLLs 有如此大了,也是时候介绍我的运行库了。在 October 1996 column,我建立了一个静态的 .LIB 文件代替微软的 LIBC.LIB 和 LIBCMT.LIB 。我称之为 LIBCTINY.LIB,它是从微软运行库分离出来的一个微缩版。

LIBCTINY.LIB臆在支持不需要大运行库的小应用程序,但是,它不适于用在 MFC 以及其它复杂的 Visual C++ 扩展运行库。理想的 LIBCTINY.LIB 使用者是一个只调用 Win32 API 的 DLLs 或 EXEs 来输出信息。

LIBCTINY.LIB 有两个指导性准则。第一,它将标准的 Visual C++ 启动例程替换成非常简单的代码。这段代码不涉及任何复杂的运行库函数,如 __crtLCMapStringA。如你呆会儿要看到的,LIBCTINY.LIB 在启动 WinMain, main 或 DllMain之前只执行一些很小的任务。第二, LIBCTINY.LIB 将复杂的函数实现如 malloc 或 printf 尽量替换为已有的Win32系统调用。所以不仅启动代码短小,大部分其他 LIBCTINY.LIB 的函数实现如 malloc, free, new, delete, printf, strupr, strlwr 等等都是非常简单的,查看一下 printf 在 printf.cpp (Figure2)实现就会明白我所说的了。

老版本的 LIBCTINY.LIB 中的约束令我很是苦恼。首先,原始版本不支持 DLLs。你只能创建控制台或者 GUI 程序,而不能创建一个小的DLL。其次,原始的 LIBCTINY 不支持 C++ 的构造和析构。当然,我说的是在全局范围内申明的构造器和析构器。在新版本中,我添加了对这些的支持。同时也了解到编译器和运行库为了让构造器和析构器运转是多么的复杂的一件事。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:使用 LIBCTINY LIB

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接