2009-10-05 203 views
2

我對這個東西不太瞭解。奇怪的編譯(?)probem。 Visual Studio C++ 2008

有一個應用程序,我使用XP上網本調整汽車。它工作得很好。然後我需要做一個簡單的修改(輸出到STDOUT而不是文件),所以我從作者那裏得到了源代碼。

我的上網本沒有編譯器的空間。我在Windows 7桌面上安裝了Visual Studio C++ 2008。我做了調整,在桌面上進行了編譯和測試,並且工作起來很完美。於是我複製了可執行的上網本,它不會跑

「此應用程序未能啓動 因爲應用程序配置 不正確。重新安裝 應用程序可能會解決這個問題」。

原始(預編譯)exe工作正常。爲了排除我的改變,我編譯了沒有mod的源代碼,但它仍然無法工作。可執行文件在7臺機器以及另一臺我試過的Win Vista機器上運行良好。

所以它顯然與XP機器和可執行文件的編譯方式有關。我真的不知道這些東西是如何工作的,所以我不知道該怎麼嘗試。

任何想法?謝謝

回答

4

它是因爲編譯到您的應用程序中的依賴項/ DLL在您運行的平臺上不存在。

打開窗口事件查看器並查看應用程序日誌。將會有一個錯誤條目和缺少的DLL名稱。在目標平臺上覆制/安裝該DLL。

我想你的vc運行時已經改變了visual studio 2008,你需要將最新版本複製到你的目標平臺上。如果你不知道在哪裏得到依賴DLL,在這裏發佈這個名字,我們可以看到我們可以做些什麼。

+0

你是完全正確的。我不認爲它是一個缺少的DLL,因爲當我遇到過去時,它總是更加明確:「XXX.DLL丟失」或「需要的DLL丟失」等。 – Steven 2009-10-05 07:23:07

6

幾個想法:

正如Keith所說,上面這是DLL/manifest問題。

  1. 獲取Visual Studio 2008可再發行組件(用於匹配應用程序平臺)並將其安裝在上網本上。

  2. 如果這沒有幫助:使用Dependency Walker找出你缺少的其他DLL。

+0

謝謝。依賴Walker給了我一些暗示它與MFC有關。 – Steven 2009-10-05 07:22:06

2

您可以檢查您的項目設置,並確保使用靜態鏈接的運行時而不是DLL。

項目設置,C/C++ - >代碼生成。確保您使用的不是DLL的運行時庫。 (如多線程調試,而不是多線程調試DLL)。

+0

謝謝。那做了瑞克。好吧,幾乎...我無法選擇你的建議,因爲它然後抱怨AFX不得不使用DLL。但後來我看到了另一個選項,使MFC成爲一個靜態鏈接庫而不是DLL,並且做到了! – Steven 2009-10-05 07:21:29