天天看點

VC2005/2008 遇到的幾個問題

好久沒有用VC2005編寫MFC了,結果這幾天用了下碰到幾個問題i:

1:與字元串(比如CString,CFile::Open)有關操作時,char* 不能使用

  簡單解決辦法,project>properties>configuration properties-->General-->Character set選擇非unciode

2:靜态連結MFC.DLL時,出現連結錯誤:

        __cdecl operator new(unsigned int)" ([email protected]@Z) already defined in LIBCMTD.lib

        ........

    解決辦法:

go to project>properties>configuration properties>linker>input

add to "Additional dependency" -> Nafxcwd.lib Libcmtd.lib

add to "ignore specific library" -> Nafxcwd.lib;Libcmtd.lib

order of libraries is important( Nafxcwd.lib;Libcmtd.lib).

3:如果拷貝.EXE到其它非VS環境機器時,會說配置不對,此時:

在C:/Program Files/Microsoft Visual Studio 8/VC/redi

st/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT 下找到了下列檔案:

msvcm80d.dll

msvcp80d.dll

msvcr80d.dll

Microsoft.VC80.DebugCRT.manifest

把這幾個檔案拷貝到目标機器上,與運作程式同一檔案夾或放到system32下,就可以運作那個程式了。

其他release版,MFC程式什麼的都是拷redist下相應檔案夾下的檔案就可以了,檔案夾後都有辨別!

方法二:

修改編譯選項,将/MD或/MDd 改為 /MT或/MTd,這樣就實作了對VC運作時庫的靜态連結,在運作時就不再需要VC的dll了。

方法三:

工程-》屬性-》配置屬性-》正常-》MFC的使用,選擇"在靜态庫中使用mfc"

這樣生成的exe檔案應該就可以在其他機器上跑了。

其中方法一不一定有效,方法三基本上都有效

以下為vs2008解決方法(Csdn上的得分回複):http://topic.csdn.net/u/20090920/23/aa36a092-e30f-4c2b-8cc5-783a8feafdf4.html

------------------------------------------------------------------------------------------------------------------------------

如果你的是MFC程式,直接在 項目 - 屬性 - 配置屬性 - 正常 - MFC的使用 - 在靜态庫中使用MFC即可

如果你的是非MFC程式,則在 項目 - 屬性 - 配置屬性 - C/C++ - 代碼生成 - 運作庫 - 選擇“多線程”或者“多線程調試”即可

---------------------------------------今天重新用了另外一種方法,肯定是可以的------------------------

編譯為release版本,然後采用共享程式集的方式來部署,安裝vcredist.exe (Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)

即編譯好release版本,然後讓使用者安裝vcredist.exe,就可直接運作了

繼續閱讀