星期日, 5月 18, 2008

讓Visual Studio 2005編譯出來的程式可以拿到沒有安裝VS2005的電腦上執行的方法

使用Visual Studio 2005所開啟Win32專案 或是Win32主控台控制專案,如果把所編譯的執行檔拿到沒有安裝.Net framework的電腦上去執行,不管是debug或是release組態的執行檔,都會出現應用程式設定不正確的錯誤訊息:

e1

本來還以為是Visual Studio 2005不支援編譯native code,可是又覺得怪怪的。經過一番研究之後,終於發現其實問題是出在專案的組態設定而已。

在Visual Studo 2005中建立Win32專案或是Win32主控台控制專案,在專案屬性設定視窗中的組態屬性->C/C++->程式碼產生設定頁,有一個設定是設定程式執行時程式庫的連結方式,在Debug組態預設是/MDd,image

而Release組態則預設是/MD。

image

要解決這個問題就是只要將Debug組態的/MDd改成/MTd,Release組態的/MD改成/MT,問題就迎刃而解了。 因為改成/MTd或是/MT的程式碼產生方式,會將程式所需要的MSVCRxx.dll改以static linking的方式編譯,非以dynamic linking的方式,所以程式執行時並不需要去找相關的dll檔案。

不過這樣做,會使執行檔的檔案大小變大一些些喔。

沒有留言: