最近使用vs編了一個小程序,在xp運行時提示“不是有效的win32應用程序”,修改方法如下:
1.工程屬性->鏈接器->系統->子系統,選擇控制檯或窗口,在下面一行“所需的最低版本”裏填入5.01
2.常規->MFC的使用,選擇“在靜態庫中使用MFC”
3.C/C++ ->代碼生成->運行庫,選擇“多線程/MT”
若編譯後出現LIBCMT.lib(invarg.obj) : error LNK2005: ___pInvalidArgHandler 已經在 LIBCMTD.lib(invarg.obj) 中定義
解決辦法:鏈接器—>輸入->忽略特定默認庫:libcmt.lib
生成DLL時,若提示nafxcw.lib(oletyplb.obj) : error LNK2001: 無法解析的外部符號 @__security_che
解決辦法:C/C++-->預處理器,把WIN32,NDEBUG,_WINDOWS,_MBCS,_USRDLL,MSGBOX_EXPORTS,_WINDLL,_AFXDLL中的_USRDLL,刪除,就可以正確編譯了
在Release版本中,不能添加忽略特定默認庫libcmt.lib
若包含的文件不在工程根目錄下,可以通過C/C++ ->常規,選擇“附加包含目錄”進行添加。
添加時最好使用相對路徑,把當前目錄最好也加進去,如 ..\CAN\Config ..\CAN
設置MFC臨時目錄,將SDF文件移除:工具-->選項--> 文本編輯器--> C/C++--> 高級--> 回退位置:這裏填入臨時目錄路徑
設置PDB臨時目錄,將PDB文件移除:項目-->屬性-->鏈接器-->調試-->生成程序數據庫文件,填入路徑,如:D:\MFC-pdb緩存\$(ProjectName)\$(TargetName).pdb
針對動態鏈接庫DLL文件的配置