Eclipse CDT项目已构建但“启动失败。找不到二进制文件”。

35

Windows 7、Eclipse CDT、Juno Service Release 2、交叉编译器。

项目可以编译生成可执行文件,但是Eclipse无法看到它们,因此“运行”失败。可执行文件放置在Debug目录中。双击或使用命令提示符调用已编译的可执行文件时没有问题。

输入图像描述

我该如何解决这个问题?


这些解决方案都没有帮到我。我不得不删除文件夹并重新做项目。有没有其他可能解决我的问题的方案? - user103828
这是因为Eclipse在链接完成后找不到你的.exe文件。只需按照下面建议的方式指向项目的exe文件,并浏览到你的exe文件即可。 - Niklas
16个回答

54

这也发生在我身上,我找到了解决方案,看看这个方法是否适用于你:

在使用锤子图标构建项目后:

  1. 选择“运行”。
  2. 运行配置。
  3. 选择“C++应用程序”。
  4. 单击打开窗口左上角的“新启动配置”图标。
  5. 在C/C++应用程序下选择“浏览”。
  6. 浏览到最初创建项目的文件夹。
  7. 进入调试文件夹。
  8. 点击与项目同名的二进制文件。
  9. 选择“确定”。
  10. 单击“应用”以确认刚刚设置的链接。
  11. 关闭该窗口。

之后,您应该能够随心所欲地运行项目。

希望这对你有帮助。


1
我正在使用Linux,这个解决方案对我有用,谢谢。 :) - Abel Tom

53

只需要选择项目,然后按下CTRL + B即可。


1
添加一下,这个键盘组合可以在Eclipse中构建所有项目。 - bork
很遗憾,这个方法没有起作用。我必须明确地创建一个构建目标。 - Taylor R
这个方法在我的 Ubuntu 16.04 LTS 和 Eclipse IDE 2018-12 上行得通。谢谢! - Bms bharadwaj
谢谢 - 在 Fedora 34 和 Eclipse 2021-09 上对我有用。 - Rob Bar

24

我认为我找到了解决方案-必须选择合适的二进制解析器,这样Eclipse才能识别可执行文件:

选择项目,然后右键单击。 项目->属性->C / C ++构建->设置->二进制解析器,PE Windows解析器。

也就是说,如果使用Cygwin编译器,则应使用Cygwin解析器。

对于我来说,这至少在交叉编译器上(在Windows 7和Ubuntu 12.04上都是如此)有效。 在Linux上,我使用 Elf 解析器。

如果有更好的解决方案,请指教。


1
对我来说可以,使用安装了C/C++和MinGW的Eclipse Kepler,并将其添加到Windows 7 Path路径中。 - dbkoren

7
在Mac上,如果你也遇到了类似的问题,就像Nenad Bulatovic上面提到的那样,你需要更改二进制解析器
按下Command + I打开属性(或右键单击项目并选择属性)。
确保你选择了Mach-O 64 Parser

enter image description here


这个可行。在此之后,按下“Command + b”进行构建。然后选择“Run as -> Local C/C++ Application”。 - mouserat

5

按下ctrl + B,然后您可以使用“运行”按钮。


3
首先,我需要点击一个小箭头按钮,打开包含“运行配置”的菜单, enter image description here 然后,在下一个窗口中,我需要点击“C/C++应用程序”,然后是一个没有文字的绿色+按钮 enter image description here 接下来,我需要按“应用”和“运行”按钮 enter image description here 最后,Eclipse就可以运行/调试程序了。 :)

2
在我的情况下,这是解决问题的方法。创建项目时,请从工具链面板中选择MinGW GCC。

enter image description here

一旦项目创建完成,选择项目文件,按下ctrl + b来构建该项目。然后点击运行按钮,输出结果将会在控制台上打印出来。

在我看来,这是一个被低估的答案。这将创建默认值,作为一个很好的起点。您可能需要取消选中“显示项目类型和工具链…”复选框,以使“MinGW GCC”选项出现。 - user4172036

1

就我所知,我曾经遇到过这个问题 - 原因是所选项目中的二进制文件中存在无效的DWARF 3信息(该项目没有任何可运行的二进制文件)。

它的工作方式大致如下:我有两个项目MainLibraryMain依赖于Library项目,前者具有可执行文件,而后者只生成静态库(Main链接到该库)。

我的运行选项设置为“运行/调试 ->启动”设置为“启动当前,否则上次”的设置如下(请参见右下角):

Run/Debug settings

如果我选择了Main项目,一切都会很好:它会启动主项目。如果我选择了Library项目1,它就会因为OP给出的错误信息而失败。原因似乎是这样的:由于我选择了Library项目,PE扫描器会扫描项目中的二进制文件,以查看是否有可启动的文件,而由于扫描失败由于这个漏洞,在它到达“启动先前启动的应用程序”之前,错误消息就会弹出。
我可以通过以下方式解决它:
  1. 确保选择了我想要启动的项目,或者...
  2. 更改编译器为可以解析DWARF信息的编译器,或者...
  3. 在运行/调试设置中选择“始终启动先前启动的应用程序” - 尽管这可能不是您首选的操作模式。

1 当然,我通常不会直接选择项目,因为我是在其中一个源文件中工作,它会间接地被选择。


1
这对我很有帮助。
转到项目 -> 属性 -> 运行/调试设置 -> 单击配置并单击“编辑”,它现在将打开“编辑配置”。
点击“搜索项目”,从“二进制文件”中选择二进制文件,然后单击确定。
注意:在执行所有这些操作之前,请确保您已完成以下操作:
--> 一旦执行“全部构建”或(Ctrl + B),就会生成二进制文件。

1
我的经验是,在构建项目(CTRL+B)后,您需要在主工具栏的RunDebug下拉菜单中创建一个运行(或调试)配置。然后在主页面中,点击Search Project...按钮。这将查找您构建的所有可执行文件并在对话框中显示它们。您可以选择正确的文件,然后点击“运行”(或)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接