Winmain@16中的未定义参考



我是StackFlow的新手,以前我没有计算机系统和编程背景。但是,现在我需要在Cygwin下为我的生物信息学项目进行分析。当我尝试编译文件名'Zone_B.Linux'using Cygwin以产生可执行程序时,我会遇到一些错误。Linux文件将从Web https://github.com/haddocking/haddock-binding-sites-tutorial/blob/master/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'Linker使用运行时库的输入点(Winmaincrtstartup),该输入点调用Microsoft的非标准Winmain而不是标准Main。因此,我尝试通过以下命令

包括条目的建议。
$ gcc zone_b.linux /entry:winMainCRTStartup
gcc: error: /entry:winMainCRTStartup: No such file or directory

但是,我会收到错误没有此类文件或目录。我认为也许是因为我在cygwin下跑步。

第二篇文章是Cygwin中Winmain的不确定的引用。从帖子中,它上述使用-c编译标志仅产生对象文件。但是,就我的情况而言,我不使用任何-c。因此,我认为这与我的问题无关。

我很感激是否有人能向我解释,因为我是这个计算领域的新手。谢谢。

zone_b.linux是在Linux计算机上运行的编译和链接的可执行程序。这是一个32位精灵二进制文件。即使使用Cygwin或Mingw32,它也不会在Windows机器上使用,而无需重新计算。

您可能必须使用GFORTRAN编译器来编译Fortran源文件zone_b.f,以创建可在Cygwin中使用的zone_b.exe。我看不到这一点的说明,但是请尝试使用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,所以请交叉您的手指。

最新更新