【问题标题】:multiple definition of main error in eclipse using C使用C在eclipse中多重定义主要错误
【发布时间】:2013-09-26 10:10:21
【问题描述】:

我正在尝试使用 Eclipse 中的 C 项目生成两个 exe,客户端和服务器。两者都有主要功能,因为它们是不同的 exe。两者都使用一个通用的 confutils.c 文件。如何解决主要问题的多重定义。我知道我们不能在一个项目中拥有两个主电源。我的 makefile 如下所示。

.c.o:
    gcc -g -c $?

# compile client and server
all: confclient confserver

# compile client only
confclient: confclient.o confutils.o
    gcc -g -o confclient confclient.o  confutils.o

# compile server program
confserver: confserver.o confutils.o
    gcc -g -o confserver confserver.o  confutils.o

我用这个替换了 eclipse 文件。我不知道eclipse是否正确阅读。我不喜欢把这个项目一分为二,因为它是如此简单的程序。我能够在 unix 中毫无问题地运行这些文件。我正在尝试查找 Eclipse 中是否有一个选项,我们可以使用它来设置构建配置。

【问题讨论】:

  • 您不太可能犯此错误,因为您似乎知道自己在做什么,但请详细检查错误的输出。这是客户端或服务器的链接时错误吗?或者这仅仅是 Eclipse 标记的错误,但项目实际上链接正常?具体查看声称拥有多个main() 定义的目标代码模块。是否有可能以某种方式将 main 放在 all 三个 中?
  • 当我在 Unix 中运行文件时它可以工作。但是当我在 eclipse 中尝试同样的方法时,我得到了这个错误。我确定错误是因为我在 confclient.c 和 confserver.c 中有 main,但两者都没有进入同一个 exe 文件。
  • 那么听起来eclipse正在尝试通过链接所有三个文件来为您链接您的项目。这应该可以作为两个可执行文件在 Eclipse 中进行正确设置。唉,我的日食技能不是 leet,否则我会把你送到正确的方向。
  • @WhozCraig,感谢您抽出宝贵时间回复。让我们看看是否有一些 eclipse 专家可以帮助我们。
  • 希望我能为您提供更多帮助。祝你好运。

标签: c eclipse build


【解决方案1】:

可以定义多个构建配置 - 每个都有不同的构建文件集。

首先打开项目属性并导航到Manage Configurations

创建一个新的构建配置:

并设置它激活

最后定义过滤器排除文件以确保您构建 main() 的源文件,您只想使用:

就是这样:

现在您可以从Menu > Project > Build Configurations > Set Active选择目标构建配置。

【讨论】:

    【解决方案2】:

    我认为您可以设置多个“构建配置”来避免这种情况。在菜单栏中的“项目”下,您可以选择您的活动构建配置。

    有多种方法可以排除不同配置中的文件。在您的项目属性下,您转到“C/C++ General”、“Paths and Symbols”,然后在这里选择“Source Location”。最重要的是,您现在可以选择构建配置,然后为不同的构建配置定义不同的源位置。在这里你可以为你的源代码添加文件夹,这里的诀窍是,对于你选择包含的文件夹,你可以使用过滤器来忽略特定的文件。

    在您的情况下,我将创建两个构建配置,一个用于 confclient,而对于这个,我将从源位置中排除 confserver.c,反之亦然。

    您将需要构建您的项目两次,但 utilspart 将保持不变,因此它不会重新编译,这比拥有两个项目的好处。此外,将所有代码放在同一个项目中可能会很好,因为我猜服务器端和客户端的代码将被连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多