vc6 link warning 4089 discarded by /OPT:REF

zing2000發表於2021-01-01

vc6 link warning 4089 discarded by /OPT:REF

vc6 編譯時會出現下面的警告資訊:

LINK : warning LNK4089: all references to "SHELL32.DLL" discarded by /OPT:REF
LINK : warning LNK4089: all references to "VERSION.DLL" discarded by /OPT:REF

表示 /OPT:REF 放棄對 dynamic link library 中匯出所有封裝函式的引用,即對"SHELL32.DLL" 和 "VERSION.DLL" 的引用。可以考慮移除對 dynamic link library 中的引用,以加快生成速度。如果程式碼中未使用的函式引用了連結器已放棄的 dynamic link library 匯出函式,可能會出現此警告。

使用 /VERBOSE 檢視連結器所放棄的函式,然後將它們從程式碼中移除。

#pragma comment(linker,"/verbose")

也可使用 "/OPT:NOREFS" 或者 "/IGNORE:4089" 直接移除警告

//#pragma warning(disable:4089)//只對當前原始檔作用
#pragma comment(linker,"/opt:noref") // 或者
#pragma comment(linker,"/ignore:4089") // 生成的可執行檔案,相對noref會小些

 

相關文章