簡體   English   中英

運行用C編寫的程序時“找不到Cygwin1.dll”。如何讓Windows找到它?

[英]Cygwin1.dll 'not found' when running a program written in C. How can I make Windows find it?

所以我正在嘗試運行我用C語言編寫的第一個hello world prog。我在eclipse中編譯它並且沒有錯誤,但是當我嘗試運行它時,我得到:

“此應用程序無法啟動,因為找不到cygwin1.dll。”

我發現這篇文章似乎表明我應該將它添加到Windows PATH,我用來做到這一點。 所以現在我的環境變量中的“Path”已經附加了“; C:\\ cygwin \\ bin \\ cygwin1.dll”。 仍然沒有工作。 任何人都知道我可能做錯了什么? 我的“程序”看起來像這樣:

#include <stdio.h>

main()
{
    printf("hello, world\n");
}

PATH環境變量需要包含包含cygwin1.dll的目錄,而不是cygwin1.dll本身的路徑。 所以只需確保PATH中包含字符串"C:\\cygwin\\bin"

順便說一句,我懇請你不要盲目地將包含cygwin1.dll的目錄添加到系統PATH中。 順序搜索路徑。 如果你碰巧在路徑中有較舊或較新版本的Cygwin運行時,那么與cygwin1.dll相關聯的其他程序可能會崩潰(除非你知道你正在尋找不同的DLL版本,否則解決發生的事情並非易事。 。)

你應該做的是將cygwin1.dll(以及你的程序可能需要的其他Cygwin DLL)復制到保存二進制文件的目錄中,然后創建一個空的(零字節長度)文件,其名稱與可執行文件相同,但附加了.local ,即,如果您的可執行文件是mytest.exe ,則創建名為mytest.exe.local的文件。 這將告訴PE加載器首先在保存二進制文件的同一目錄中查找所需的DLL,從而避免以后遇到很多麻煩。

我有同樣的問題......亞當羅森菲爾德的答案很好地解決了。 在我的電腦上,路徑必須是"C:\\cygwin64\\bin"

我第一次沒有認識到我的cygwin版本是64位......但很明顯,路徑變量中的這些微小差異決定了它是否有效。

添加: ;C\\cygwin64\\bin到Windows 系統 PATH變量的末尾

另外,要編譯以在CMDPowerShell中使用 ,您可能需要使用:

x86_64-w64-mingw32-g++.exe -static -std=c++11 prog_name.cc -o prog_name.exe

(這會調用交叉編譯器,如果已安裝。)

暫無
暫無

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

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