簡體   English   中英

cygwin中WinMain @ 16下的未定義引用

[英]Undefined reference under WinMain@16 in cygwin

我是Stackflow的新手,以前我沒有計算機系統和編程方面的知識。 但是,現在我需要在cygwin下為我的生物信息學項目運行分析。 當我嘗試使用cygwin編譯文件名“ zone_b.linux”以生成可執行程序時遇到錯誤。 該linux文件可從https://github.com/haddocking/HADDOCK-binding-sites-tutorial/blob/master/ana_scripts/zone_b.linux下載。 當我嘗試在cygwin下使用以下命令進行編譯時,會產生以下錯誤:

$ gcc zone_b.linux
/usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../libcygwin.a(libcmain.o): In 
function `main':
/usr/src/debug/cygwin-2.9.0-3/winsup/cygwin/lib/libcmain.c:37: undefined 
reference to `WinMain@16'
collect2: error: ld returned 1 exit status

錯誤說明

我在stackoverflow下搜索以下錯誤,並且發現了兩個存在類似問題的帖子。

首先是從未定義的引用到WinMain @ 16的帖子。 它指出問題是由於Microsoft的鏈接器使用了運行時庫入口點(winMainCRTStartup),該入口點調用了Microsoft的非標准WinMain而不是標准main。 所以,我嘗試通過以下命令發布包含條目的建議

$ gcc zone_b.linux /entry:winMainCRTStartup
gcc: error: /entry:winMainCRTStartup: No such file or directory

但是我得到的錯誤沒有這樣的文件或目錄。 我認為可能是因為我在cygwin下運行,而不是mingW。

第二篇文章是Cygwin中對WinMain未定義引用 從帖子中說,使用-c compile標志僅生成目標文件。 但是,就我而言,我沒有使用任何-c。 因此,我認為這與我的問題無關。

如果有人可以向我解釋,我將不勝感激,因為我是這個計算領域的新手。 謝謝。

zone_b.linux是在Linux機器上運行的經過編譯和鏈接的可執行程序。 它是一個32位的ELF二進制文件。 如果不重新計算,即使在使用cygwin或mingw32的Windows計算機上也無法使用。

你可能有編譯zone_b.f ,一個FORTRAN源文件,使用gfortran編譯器創建一個zone_b.exe是在Cygwin中使用。 我沒有看到有關此操作的說明,但嘗試使用gcc zone_b.f和食指。 確保使用cygwin安裝程序安裝了gfortran。

您還需要通過在ana_scripts目錄中執行make來(重新)構建其他可執行文件( cluster_struccontact )。 任何提供的可執行文件(來自git clone ...或下載的.zip文件)在cygwin下均不起作用。

您將需要安裝perlpython 我認為perl是默認安裝的。 您可以使用cygwin安裝程序安裝python2。 python腳本看起來將與python2或python3一起使用,以默認值為准。 今天,在cygwin上,python2是默認的python。 我不做perl ,所以用手指交叉。

暫無
暫無

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

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