4

我在 Windows 7 下使用 Eclipse Juno for c/c++。我创建了一个共享库项目和一个可执行项目。我通过以下方式在可执行项目中添加了共享库项目作为参考:

可执行项目的属性 -> C/C++ 常规 -> 路径和符号 -> 参考 -> 检查共享库项目

所有这些在编译时都很好用,我可以在可执行项目中包含我的共享库项目的类,并使用它等等。

但是,当我尝试在 Eclipse 中运行可执行项目时,我什么也得不到。没有错误,没有控制台输出。经过一番谷歌搜索后,我在这里发现了一个类似的问题:

http://www.eclipse.org/forums/index.php/m/650331/

显然,如上所述,将共享库项目添加到 Eclipse 中的可执行项目中,并不会在运行时在 Eclipse 中将 dll 文件添加到可执行 (.exe) 文件的 PATH 中。类比 Eclipse for Java:如果你有一个 Java JAR 项目 A 和另一个 Java JAR 项目 B,通过在 Eclipse 中从 B 到 A 的引用,当在 Eclipse 中运行项目 A 时,B 的编译后的 jar 文件将添加到 A 的类路径中. 我认为它与 Eclipse for C/C++ 类似,但显然不是。

果然,如果我手动把.exe文件和.dll文件放在同一个文件夹下,运行.exe,一切正常。此外,如果我将 .dll 文件复制到 Eclipse 的可执行项目的编译目录中,我可以从 Eclipse 运行可执行项目并且没问题。

我的问题是,当我告诉它运行可执行项目时,有没有办法让 Eclipse 将该共享库项目的 dll 文件添加到运行时?我在上面链接的帖子中讨论的解决方案是将分片库项目的编译目录手动添加到可执行项目的 Eclipse 运行配置中,即将其添加到那里的 PATH 变量中。但我发现这很麻烦而且不便携,如果 Eclipse 管理这两个项目,它应该能够将所有必要的东西传递给运行时。

4

2 回答 2

9

好吧,我已经在运行时手动将库项目的 dll 添加到可执行项目的路径中。我确实找到了一种使它更便携和项目位置中立的方法(即,如果您将两个项目的源文件夹移动到另一台机器,并在那里在 Eclipse 中重新打开它们,它应该仍然可以工作):

  1. 右键单击可执行项目 -> 运行方式... -> 运行配置

  2. 在环境选项卡中单击“新建...”以添加新的环境变量

  3. 将你的变量命名为“PATH”并给它一个类似于下面的值:

    ${env_var:PATH};${workspace_loc:/cppAStar/Debug}

在哪里:

  • ${env_var:PATH} 是 Eclipse 的说法“获取在 Eclipse 中声明的 PATH 环境变量的现有值”

  • 这 ”;” 是将现有的 PATH 条目与我们将要添加的新条目分开

  • ${workspace_loc:/cppAStar/Debug} 这告诉 Eclipse 获取名为 cppAStar 的工作区项目的位置(这里 cppAStar 是我的共享库项目),然后“/Debug”指的是这个特定项目在何时创建 .dll 文件的位置它建成了。

我无法弄清楚的问题:

  • “运行配置”中的“环境”选项卡有一个名为“将环境附加到本机环境”的选项。我认为通过检查这一点,我只需要在我在这里声明的 PATH 变量中添加 .dll 目录的位置,它将被附加到现有的 PATH 中。但是我没有设法完成这项工作,因此在附加新值之前手动重新添加所有现有 PATH
于 2012-10-24T13:28:09.553 回答
1

不幸的是,该解决方案不适用于调试配置。请参阅错误 338420 - 启动配置的环境选项卡变量未传递给 gdb 进程本身

有没有办法解决这个问题进行调试?我的意思是除了执行构建后步骤,例如:

cmd /c 复制 "${BuildArtifactFilePrefix}${BuildArtifactFileName}" "${WorkspaceDirPath}\bin\"

于 2013-12-12T09:53:08.493 回答