天天看點

使用VS2017生成的動态庫時出現__acrt_iob_func連結錯誤

使用VS2013等版本進行程式開發時,若用到VS2017或更高版本編譯的動态連結庫,編譯時會出現一些特殊的連結錯誤,其中一個錯誤是關于__acrt_iob_func的:

error LNK2001: 無法解析的外部符号 __acrt_iob_func
           

該問題可如下解決:

#if _MSC_VER < 1900
#ifdef __cplusplus 
extern "C"
#endif 
FILE* __cdecl __acrt_iob_func(unsigned i) 
{
	return &__iob_func()[i];
}
#endif /* _MSC_VER < 1900 */
           

在cpp檔案中添加上述代碼,建立函數__acrt_iob_func調用VS2013中的__iob_func函數,完成相同功能。微軟在更新C運作庫時,放棄了部分相容性,使混合使用VS成為噩夢。希望有所幫助。

繼續閱讀