nmake 可用(參考第 2 篇)。VC98\CRT\SRC:MAKEFILE、MAKEFILE.INC、MAKEFILE.SUBMAKEFILE,刪除 6 處 $(V6TOOLS)include\winver.h 行(僅影響 DLL 編譯)。| 模型 | 指令 | 產出 LIB | 備註 |
|---|---|---|---|
| ST(單執行緒靜態) | nmake st | libc.lib libci.lib libcp.lib | 對應 /ML |
| MT(多執行緒靜態) | nmake mt | libcmt.lib libcimt.lib libcpmt.lib | 對應 /MT |
| DLL(多執行緒動態) | nmake dll | 見下表 | 出現 LNK4102 警告屬正常 |
| XST(ST Debug) | nmake xst | libcd.lib libcid.lib libcpd.lib | 含 PDB |
| XMT(MT Debug) | nmake xmt | libcmtd.lib libcimtd.lib libcpmtd.lib | 含 PDB |
| XDLL(DLL Debug) | nmake xdll | 見下表 | 含 PDB、MAP、RES |
| LIB | DLL | MAP | RES | 對應發布庫 |
|---|---|---|---|---|
_sample_.lib | _sample_.dll | _sample_.map | _sample_.res | MSVCRT.LIB |
sample_i.lib | sample_i.dll | sample_i.map | sample_i.res | MSVCIRT.LIB |
sample_p.lib | sample_p.dll | sample_p.map | sample_p.res | MSVCPRT.LIB |
| LIB | DLL | MAP | RES | PDB | 對應發布庫 |
|---|---|---|---|---|---|
_sampld_.lib | _sampld_.dll | _sampld_.map | _sampld_.res | _sampld_.pdb | MSVCRTD.LIB |
sampld_i.lib | sampled_i.dll | sampled_i.map | sampled_i.res | sampld_i.pdb | MSVCIRTD.LIB |
sampld_p.lib | sampled_p.dll | sampled_p.map | sampled_p.res | sampld_p.pdb | MSVCPRTD.LIB |
.obj 位於 build\<model>_obj 目錄。build 根目錄。LNK4102(解構函式匯出警告)微軟文件說明屬正常,可忽略。親手編譯 CRT 能深入理解:
這也是「源碼面前,了無秘密」的最佳實踐。