簡體   English   中英

在Windows上運行在Cygwin中編譯的C ++可執行文件

[英]Running C++ executables compiled in Cygwin on Windows

想法
我在Cygwin上使用G ++編譯了一個C ++ exe,我希望能夠通過PHP將該輸出輸出到我的HTML中。 也就是說,假設我有一個C ++可執行文件“test.exe”,它輸出“Hello,World!” 什么時候跑。 從邏輯上講,我應該可以做到

<?=exec("./test.exe")?>

將test.exe文件的輸出發送到該文件。

問題
我正在Win7上的本地WAMP服務器上測試它。 顯然,Win7 WAMP上的execsystem調用都會通過Windows命令提示符,這意味着它正在運行批處理而不是bash。 由於某種原因,批處理不喜歡Cygwin編譯的可執行文件,給出錯誤:

“程序無法啟動,因為您的計算機缺少cygwin1.dll。請嘗試重新安裝該程序以解決此問題。”

那么,我怎么能這樣做,所以windows批處理可以執行cygwin編譯的文件?

你可以做一些事情:

  1. 您可以使用Visual Studio編譯您的應用程序(我相信Microsoft提供免費版本... Visual Studio Express )。 這是我個人采取的路線。 您不需要依賴cygwin DLL(除非您在cygwin安裝的某些部分進行編譯),並且您的可執行文件在Windows系統中可以更加輕松。
  2. 您可以將cygwin1.dll的位置放入系統PATH環境變量中。 這具有使用cygwin成功運行構建的未來可執行文件的優點,但缺點是如果您想要分發您的應用程序,其他用戶將無法開箱即用。
  3. 您可以將cygwin1.dll從cygwin安裝的/ bin目錄復制到與可執行文件相同的文件夾中。 這是可移植的(在Windows系統中......在某種程度上),但缺點是它可能違反了Cygwin許可證 (沒有讀取許可證,我不確定)。 我只推薦這條路線用於測試目的。

“程序無法啟動,因為您的計算機缺少cygwin1.dll。請嘗試重新安裝該程序以解決此問題。”

那么這里的錯誤信息非常清楚。 使用Cygwin編譯的可執行文件需要運行cygwin1.dll。 簡單的方法是將cygwin1.dll復制到與您的可執行文件相同的位置,以便它可以找到它。

如果你對這種依賴關系不是太瘋狂,你可以嘗試使用MinGW建立你的hello世界,而不是沒有這種依賴關系。

將cygwin1.dll復制到包含test.exe的目錄中

請參閱程序無法啟動,因為Eclipse CDT中缺少cygwin1.dll ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM