在Eclipse中,在运行时将共享库项目的dll文件添加到可执行项目路径中

Shi*_*gon 4 runtime eclipse-cdt shared-libraries

我在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的C/C++类似,但显然不是.

果然,如果我手动获取.exe文件和.dll文件,将它们放在同一个文件夹中并运行.exe,一切正常.此外,如果我将.dll文件复制到Eclipse的可执行项目的编译目录中,我可以从Eclipse运行可执行项目,这没关系.

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

Shi*_*gon 9

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

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

  2. 在Environment选项卡中单击"New ..."以添加新的环境变量

  3. 将变量命名为"PATH",并为其赋予与此类似的值:

    $ {ENV_VAR:PATH}; $ {workspace_loc:/ cppAStar /调试}

哪里:

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

  • ";" 是将exisitng PATH条目与我们即将添加的新条目分开

  • $ {workspace_loc:/ cppAStar/Debug}这告诉Eclipse获取名为cppAStar的工作空间项目的位置(此处cppAStar是我的共享库项目)然后"/ Debug"指的是此特定项目在何处创建.dll文件的位置它是建立的.

我无法弄清楚的问题:

  • "运行配置"中的"环境"选项卡有一个名为"将环境附加到本机环境"的选项.我认为通过检查这个我只需要在我声明的PATH变量中添加.dll目录的位置,它将被附加到现有的PATH.但是我没有设法做到这一点,因此在附加新值之前手动重新添加所有现有PATH