【问题标题】:How to add a path of runtime DLL in VIsual C++ Express 2010 project?如何在 VIsual C++ Express 2010 项目中添加运行时 DLL 的路径?
【发布时间】:2010-10-23 17:10:29
【问题描述】:

我有一些外部依赖项要加载到我的 C++ 程序中,例如 boost 或其他库。如果那些 .DLL 库不在 $PATH 中,一旦我运行我的程序,我就会收到“无法加载 DLL”错误消息。为了在运行我的程序时可以加载这些 .DLL,我需要将这些路径添加到库目录。例如:

PATH=$PATH;c:\boost\lib

它有效,但我不喜欢这种愚蠢的解决方案,它会使全球环境变脏。此外,我还有更多的依赖项要添加。这样做最糟糕的是,一旦你有不同版本的依赖项,就会非常烦人。例如这里有一个项目A依赖于boost1.3.7,要开发它,你必须改变PATH

PATH=$PATH;c:\boost1.3.7\lib

还有,这里需要开发另外一个依赖boost1.4.4的项目B,哦,太好了....改变量

PATH=$PATH;c:\boost1.4.4\lib

如您所见,这不是一个聪明的解决方案......如果您有多个库要链接,那将是一场真正的噩梦。我想要的是修改 VC++ 项目的属性,仅在运行/调试我的程序时将这些路径添加到 PATH 变量中。我试图添加路径到

VC++ Directories -> Executable Directories

但它似乎是用于构建的 PATH,而不是用于运行的。那么,如何为我的 VC++ 项目添加路径以正确运行我的程序?

【问题讨论】:

    标签: visual-studio-2010 dll directory runtime


    【解决方案1】:

    不确定您为什么考虑将其添加到 PATH 作为“愚蠢”的解决方案?对于 3rd 方库,这是一个非常常见的解决方案。如果你想重新分发你的应用程序,或者只是从命令行运行它而不是在 VS 下运行它呢?

    如果你坚持不修改全局路径,也可以试试:

    • 将所需的 dll 添加到可执行文件的目录(= 在多个版本和/或多个构建路径的情况下非常混乱且容易出错)
    • 将需要的 dll 添加到 %WINDIR%/system32(同上)
    • 制作一个批处理文件来设置所需的 PATH,然后调用 VS。现在 VS 使用你刚刚设置的 PATH,而全局 PATH 保持不变。
    • 您可以尝试在 WinSxS 文件夹中安装 dll,但这并不容易。 (for example)

    顺便说一句,要解决版本控制问题,请使用符号链接:

    mklink /J c:/boost c:/boost1.3.7
    

    然后将 c:/boost 添加到您的 PATH 中。如果版本更改,请更改符号链接而不是环境

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      • 2015-11-08
      • 1970-01-01
      • 2011-04-06
      相关资源
      最近更新 更多