VB纯手工Link/链接编译

这些其实VB6.0 IDE把这些功能屏蔽了,不让用户使用。

具体为啥,不知道

实际上vb6.0 link.exe和vc++的用法一样。

可以手工来连接。

先替换link.exe中断编译,提取ojb文件(可恶的IDE会在编译完后把ojb文件删除)

接下来看看link.exe的参数:

Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

usage: LINK [options] [files] [@commandfile]

   options:

      /ALIGN:#         指定每一节的对齐方式
      /BASE:{address|@filename,key}      为程序设置基址
      /COMMENT:comment
      /DEBUG         创建调试信息
      /DEBUGTYPE:{CV|COFF}
      /DEF:filename        将模块定义 (.def) 文件传递到链接器
      /DEFAULTLIB:library       在解析外部引用时搜索指定的库
      /DELAY:{NOBIND|UNLOAD}       控制 DLL 的延迟加载
      /DELAYLOAD:dll       导致延迟加载指定的 DLL
      /DLL        生成 DLL
      /DRIVER[:{UPONLY|WDM}]      创建 Windows NT 核心模式驱动程序
      /ENTRY:symbol       设置起始地址
      /EXETYPE:DYNAMIC
      /EXPORT:symbol       导出函数
      /FIXED[:NO]       创建只能在其首选基址加载的程序
      /FORCE[:{MULTIPLE|UNRESOLVED}]     强制完成链接,不论符号是否无法解析或被定义了多次
      /GPSIZE:#
      /HEAP:reserve[,commit]      设置堆的大小(以字节为单位)
      /IMPLIB:filename       重写默认的导入库名
      /INCLUDE:symbol       强制符号引用
      /INCREMENTAL:{YES|NO}      控制增量链接
      /LARGEADDRESSAWARE[:NO]      通知编译器应用程序支持大于 2 GB 的地址
      /LIBPATH:dir       允许用户重写环境库路径
      /LINK50COMPAT
      /MACHINE:{ALPHA|ARM|IX86|MIPS|MIPS16|MIPSR41XX|PPC|SH3|SH4} 指定目标平台
      /MAP[:filename]       创建映射文件
      /MAPINFO:{EXPORTS|FIXUPS|LINES}     包括映射文件中的指定信息
      /MERGE:from=to       合并区段
      /NODEFAULTLIB[:library]      在解析外部引用时忽略所有(或指定的)默认库
      /NOENTRY        创建纯资源 DLL
      /NOLOGO        取消显示启动版权标志
      /OPT:{ICF[,iterations]|NOICF|NOREF|NOWIN98|REF|WIN98}  控制 LINK 优化
      /ORDER:@filename       按预先确定的顺序将 COMDAT 放置到图像中
      /OUT:filename       指定输出文件名
      /PDB:{filename|NONE}      创建程序数据库 (PDB) 文件
      /PDBTYPE:{CON[SOLIDATE]|SEPT[YPES]}
      /PROFILE        生成一个可与“性能工具”探查器结合使用的输出文件。
      /RELEASE        在 .exe 文件头中设置校验和
      /SECTION:name,[E][R][W][S][D][K][L][P][X]    重写节的属性
      /STACK:reserve[,commit]      设置堆栈的大小(以字节为单位)
      /STUB:filename       将 MS-DOS 存根 (stub) 程序附加到 Win32 程序
      /SUBSYSTEM:{NATIVE|WINDOWS|CONSOLE|WINDOWSCE|POSIX}[,#[.##]] 通知操作系统如何运行 .exe 文件
      /SWAPRUN:{CD|NET}       通知操作系统在运行链接器输出前将它复制到交换文件
      /TSAWARE[:NO]       创建专为在终端服务器下运行而设计的应用程序
      /VERBOSE[:LIB]       打印链接器进度消息
      /VERSION:#[.#]       分配版本号
      /VXD
      /WARN[:warninglevel]
      /WINDOWSCE:{CONVERT|EMULATION}
      /WS:AGGRESSIVE

相关说明和一些用法:
link时使用filealign,align选项可明显减少exe文件的大小,opt,merge也可以,不过不是很明显。

/EXPORT:symbol选项可用于VB实现输出DLL的制做。

/opt:nowin98
/align:0x800 '减少可执行程序的空白区
/merge:.text=.data '合并text区段(版权)
/merge:.rsrc=.data '合并rsrc区段(图标)

减小体积:
/ALIGN:32 让程序32位对齐,体积可以减小很多.

生成控制台程序:
/SUBSYSTEM:CONSOLE