各位前輩,我在開發中遇到了這樣一個問題:
我手頭有一個靜態庫,有代碼,並且分別在debug和release模式下成功編譯出了不同版本的lib庫文件。我在其它的項目中需要鏈接這個庫,並且Debug版本的程序鏈接debug版本的靜態庫,release版本的程序鏈接release版本的靜態庫。現在的情況是,release版本的程序生成成功,debug版本的程序提示鏈接錯誤:
Logger_D.lib(StaticLogger.obj) : error LNK2038: 檢測到“_ITERATOR_DEBUG_LEVEL”的不匹配項: 值“0”不匹配值“2”(dllmain.obj 中)
查看網上的信息,都說是鏈接的庫的debug版本或release版本不匹配,可是我明明是編譯並鏈接了對應版本的靜態庫啊~
於是一不做二不休,在release版本的程序中鏈接了debug版的靜態庫試試——竟然也能成功!這說明我根本就沒有成功生成debug版本的靜態庫!可是將編譯選項翻了一遍又一遍,就是找不出原因~
懇請各位前輩指教,到底應該怎樣設置編譯選項,生成Debug版本的靜態庫啊?
各位前輩,問題解決了~
我用二進制查看器找到lib文件裡的_ITERATOR_DEBUG_LEVEL字段,將值手動改為2(0x30改為0x32,一共5處),順利通過鏈接。但是原因還是不清楚。
只好手動修改二進制文件了~
激動中~