2015-01-10 25 views
0

VC++ 2008 win32控制檯應用程序使用一些MFC函數,它可以在VC++ 2008環境中的「調試」模式下正常運行。此外,調試可執行文件可以在安裝了完整版本的Visual Studio 2008的任何計算機上運行。win32控制檯程序並排配置錯誤

,但同樣的調試可執行文件將無法在不具備Visual Studio 2008中安裝的系統上運行,它提供了以下錯誤信息:

應用程序未能啓動,因爲它並排側配置不正確。請參閱應用程序事件日誌或使用命令行sxstrace.exe工具獲取更多詳細信息。

最初搜索此問題導致MSN建議安裝VC++ 2008 x86可再發行版SP1。但是這沒能解決問題。

然後,Win32控制檯應用程序被重新編譯爲 '釋放' 模式和它提供了以下錯誤消息:

致命錯誤C1189:#ERROR:建築MFC應用程序與/ MD [d](CRT DLL版本)需要MFC共享的dll版本。請#define _AFXDLL或不要使用/ MD [d]

這個錯誤發生在afx.h頭文件中。

我試圖在預處理實際的#define _AFXDLL,但它創造了約無法新的錯誤來轉換MFC字符串類型爲char *等

我也試過「使用的MFC」設置:在靜態庫和共享DLL,都會產生更多的錯誤

問題是,原始程序是在VC++ 6.0中創建的,它使用了很多MFC函數(特別是字符串和CObject),但是在VC++ 2008中重新編譯後,以某種方式可以在調試模式下工作,但不能在發佈模式下獨立運行,這是我需要一個可以運行在新窗口(7或8)上的獨立exe文件

任何人都可以幫忙。謝謝。

+0

請閱讀[部署原生桌面應用程序(Visual C++)](http://msdn.microsoft.com/zh-cn/library/zebw5zk9.aspx),具體爲[確定要重新分配哪些DLL](http:// msdn.microsoft.com/en-us/library/8kche8ah.aspx)。這就解釋了爲什麼你不能在沒有安裝Visual Studio的系統上運行你的應用程序。這並沒有解決您的第二個問題:由於您的編譯器/鏈接器設置不兼容,因此您的發行版配置無法生成。這是完全不同的問題,並要求點擊* Ask Question *按鈕。 – IInspectable

回答

0

是的。不要以調試模式構建。爲發佈版本構建。您無法合法分發調試DLL。您可以通過PDB文件構建一個包含調試信息的發佈版本。

0

如果您的發佈版本具有對某些調試庫的依賴關係,則可能發生這種情況,這種情況發生在非調試版本上。

相關問題