2014-12-28 35 views
5

我試圖在Windows中移植一個linux軟件。 我的軟件依賴於gtk,boost和libgerbv(我已經在cygwin上手動編譯過) 我已經成功編譯了它,如果我在cygwin的終端中運行它,它會起作用,但是如果我將.exe複製到一個文件夾中cygwin1.dll和我運行它,它會靜默終止 如果我在cmd.exe中運行它,結果相同。
如何將這個可執行文件導出到cygwin環境之外?我只想與所需的共享庫分發和cygwin1.dll運行cygwin在沒有cygwin環境的windows中構建exe文件

感謝

+2

從我的經驗來看,cygwin應用程序在cygwin shell之外不能很好地工作。你有沒有試過MinGW http://www.mingw.org/或MSYS http://www.mingw.org/wiki/MSYS? – doc

+1

使用[Dependency Walker工具](http://www.dependencywalker.com/)確保您具有所有DLL依賴關係。 –

回答

3

「我如何‘出口’cygwin環境超出這個可執行文件?」

總之:這是不可能的。您需要在目標機器上安裝cygwin環境,然後從cygwin shell運行由cygwin創建的程序。

Cygwin需要一些自己的.dll文件來綁定到底層的Windows操作系統。如果沒有cygwin的完整安裝,這些不能被複制到另一個Windows系統。

我這裏還有關於這個的更多細節:What is the difference between Cygwin and MinGW?


這就是爲什麼我喜歡使用MinGW的可移植目標Windows系統。 Cygwin擁有它的權力和存在的權利,當涉及到針對作爲主機在Windows上運行的不同(例如嵌入式)目標的交叉編譯代碼時。