在VS2005里開發的VC++程序在編譯的時候,微軟默認會加入自己的?.Net Framework (方便推廣自家產品),讓你的VC++程序依賴它,這就導致程序編譯后,無法跟往常一樣直接打包,在別的機器就能正常運行。如果加入了.Net Framework ,安裝包就會非常大。以下方法很好的解決了這個問題,通過以下兩種方法可以用VS2005將VC++程序編譯為不需要依賴.Net Framework就可以直接運行的程序了。
方法一:
1、右鍵項目-屬性
2、配置屬性-C/C++-代碼生成
3、運行時庫-選擇/mt或者/mtd
?即 Multi-threaded?(/MT) ?或?Multi-threaded?Debug?(/MTd) ?
?? 不要選?Multi-threaded?DLL?(/MD) ?Multi-threaded?Debug?DLL?(/MDd)
4、配置屬性-C/C++-常規
5、選擇在靜態庫中使用MFC
6、編譯運行即可
????方法二:在你的VS安裝目錄里如下路徑
??? /Microsoft Visual Studio 8/VC/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT
??? 下找到下列文件:?
????msVCm80d.dll
????msVCp80d.dll
????msVCr80d.dll
????Microsoft.VC80.DebugCRT.manifest
?? 把這幾個文件拷貝到目標機器上,與你編譯后的可執行程序放置在同一文件夾,或者放到system32下,就可以讓目標機器運行該程序了。
????2.VC++帶模板函數時能編譯不能連接,顯示連接錯誤“error?LNK2019:?無法解析的外部符號”
????解決方法:用模板的時候,把聲明和實現放在一個文件里。因為模板的機制決定了不可能把模板的CPP象其它方式(不用模板)一樣編譯成一個obj,數據類型都是程序中用到時才會知道的,這時連接的函數名也會因類型不同而不同,所以多數編譯器都要求寫在一個文件中。
????3.如果在VC++2005的程序中使用UNICODE字符集的API等函數,可以在項目屬性->配置屬性->字符集處選“使用UNICODE字符集”,如果只用ASCII碼,就選“未設置”即可!