You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Visual Studio C++项目如何使用位于其他文件夹的DLL

解决方案

方案1:仅VS调试运行时生效,无需修改系统环境变量

该方案无需改动代码,仅需分开配置Debug和Release路径即可:

  • 右键项目 → 选择「属性」
  • 顶部「配置」下拉框先切换到Debug,「平台」选择你项目的目标平台(如x64)
  • 依次展开「配置属性」→「调试」
  • 在「环境」项填入:PATH=$(LIB_DEBUG);%PATH%($(LIB_DEBUG)为你自定义的Debug版本DLL目录环境变量
  • 将「合并环境」选项设置为「是」
  • 再将顶部「配置」切换到Release,重复上述操作,「环境」项改为PATH=$(LIB_RELEASE);%PATH%
  • 点击确定保存配置,重启VS即可生效

之前配置不生效大概率是因为未区分配置直接选了「所有配置」,或是自定义路径未放在PATH最前面,导致系统优先加载了其他路径下的同名DLL。


方案2:同时支持VS调试、直接双击exe运行生效

如果需要脱离VS也能正常加载对应DLL,不需要复制DLL到项目目录,可以配合延迟加载实现:

  • 右键项目 → 属性,切换到对应配置(Debug/Release分别设置)
  • 展开「配置属性」→「链接器」→「输入」,在「延迟加载的DLL」项填入你要加载的DLL文件名
  • 再展开「配置属性」→「C/C++」→「预处理器」,在「预处理器定义」项,Debug配置下添加LIB_DEBUG_PATH=L"$(LIB_DEBUG)",Release配置下添加LIB_RELEASE_PATH=L"$(LIB_RELEASE)"
  • 在程序入口函数的最开头添加如下代码:
#ifdef _DEBUG
SetDllDirectory(LIB_DEBUG_PATH);
#else
SetDllDirectory(LIB_RELEASE_PATH);
#endif

调用SetDllDirectory会优先从指定目录加载DLL,不需要修改系统环境变量,也不需要复制DLL到项目目录。

内容的提问来源于stack exchange,提问作者Il'ya Zhenin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:24:02