【问题标题】:Add shared library project's dll file to executable projects path at runtime in Eclipse在 Eclipse 运行时将共享库项目的 dll 文件添加到可执行项目路径中
【发布时间】:2012-10-24 12:04:04
【问题描述】:

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

executable project's properties -> C/C++ General -> Path and Symbols -> References -> 检查共享库项目

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

但是,当我尝试在 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 管理这两个项目,它应该能够将所有必要的东西传递给运行时。

【问题讨论】:

    标签: runtime shared-libraries eclipse-cdt


    【解决方案1】:

    好吧,我已经在运行时手动将库项目的 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

    【讨论】:

    • 感谢您的帮助,我遇到了同样的问题。
    【解决方案2】:

    不幸的是,该解决方案不适用于调试配置。见Bug 338420 -Launch configuration's Environment tab variables are not passed to the gdb process itself

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 2012-09-16
      • 2017-02-08
      • 2017-07-25
      • 2010-12-19
      • 2013-06-02
      • 2018-10-10
      相关资源
      最近更新 更多