2013-05-29 87 views
5

我對某個主題有一個簡短的問題,我很樂觀。我有一個程序,我發一個命令給另一個.exe文件,我稱爲「工具」。我以這種格式發送:C++將外部.exe嵌入到我編譯的.exe中

system("tools\\program.exe -r -w file.dat file_new.dat"); 

一切都很正常,但是,當我建立我的程序爲.exe文件,將需要其他可執行文件是在第二個文件夾,很明顯。有沒有辦法將外部.exe文件包含到我的項目中,以便最終產品只是一個.exe文件?

我正在使用Visual Studio 2008(lol)並運行windows 7 64bit。

謝謝:)

回答

4

通常情況下,外部依賴的管理將由安裝程序處理。 NSIS是我最喜歡的Windows平臺解決方案。

替代方法:將二進制轉換爲base64編碼,並將其作爲頭文件嵌入到項目中。運行應用程序時,將exe的base64表示轉換爲二進制序列,然後將該字節序列輸出到臨時目錄中的文件(如C:\ windows \ temp或%AppData%\ Local \ Temp)。然後運行exe。一旦你完成了它,刪除exe文件。

+0

所以我需要做一個安裝程序?我覺得有一些方法可以將它添加爲資源或其他東西。我希望能夠向某人發送一個.exe文件。我也不希望用戶能夠獲得外部.exe的副本,這就是爲什麼我希望它嵌入。 – mrg95

+0

不,您不需要,但替代方案要複雜得多,NSIS會生成一個快速且壓縮的exe文件 –

+0

我需要讓用戶將我的程序「安裝」到他們的系統中嗎?如果是這樣,當它安裝時,他們是否可以訪問外部.exe。因爲它是一個.exe,我不想讓任何人從我這裏得到。 – mrg95

1

您可以將文件添加到資源。在命令執行之前,您可以檢查第二個可執行文件是否存在。如果它不存在,你必須從資源中提取數據並存儲到文件中...

This thread正在處理從資源中讀取html。它與二進制文件非常相似。