2010-04-02 89 views
1

我想執行一個exe文件,它是用VC++。net 2008編寫的,在一臺擁有windows xp並且沒有.net框架但沒有C++庫的計算機上。 但是當我運行該文件,我得到這個錯誤:注入dll到exe文件

This application has failed to start because the application configuration is incorrect.... 

我想辦法把所有的依賴一起成爲自由這個問題。 有誰知道我該怎麼辦?

+0

你的意思是C++/CLI? – SLaks 2010-04-02 15:43:06

回答

2

如果你正在寫一個純粹的C++應用程序(僅Win32,.NET沒有),那麼你要staticly鏈接C++運行時,可以在項目屬性進行更改。有關說明,請參閱this answer。 (這是爲VC2005,但在VC2008中的步驟是相同的​​)

1

您似乎在尋找.Net連接器,例如this one

+0

我該如何設置VS2008中的項目才能從我的dll中使用,而不是從我的系統dll中使用? – JGC 2010-04-02 15:48:25

+0

如果沒有第三方軟件,您無法爲.Net項目執行此操作。 – SLaks 2010-04-02 15:50:45

+0

我不認真使用.net我只想使用Windows功能。 你知道可以解決我的問題的其他環境嗎? – JGC 2010-04-02 15:52:44

0

你有兩個基本選擇:要麼用純C++(或者其他一些可以/將會生成完全獨立的可執行文件的語言)編寫程序,要麼使用依賴walker來查找需要的DLL,並將它們打包一個安裝程序。

你所建議的(以現有的可執行文件依賴於某些DLL,並試圖「注入」的DLL文件到可執行文件)選項幾乎是不可行的。理論上,您可以(例如)將安裝程序創建爲可執行文件,並讓用戶每次運行程序時都要重新運行安裝程序。這通常會增加用戶可能不喜歡的開銷。

同樣,你可以把DLL的可執行文件作爲二進制資源和使用FindResourceLoadResource等,寫出它的內容出來到一個臨時文件 - 但是這需要一些半高級編程,它仍然施加了相當多的開銷。

+0

有沒有什麼辦法可以將我的dll放在我的可執行文件附近並能夠使用它們? – JGC 2010-04-02 15:56:17

+0

@JGC:是的 - 如果你用可執行文件將它們複製到同一個目錄中,系統將能夠找到它們。 – 2010-04-02 17:01:29