gpt4 book ai didi

c++ - 如何为 native 单元测试添加额外的 dll 搜索目录?

转载 作者:搜寻专家 更新时间:2023-10-31 01:00:18 31 4
gpt4 key购买 nike

我正在开发一个包含许多解决方案和更多项目的大型代码库。

当我编写单元测试时,它们通常依赖于存在的许多 dll,这些 dll 由其他解决方案构建到我当前解决方案的不同输出文件夹中。

我通常会添加构建步骤以将所需的 dll 复制到当前解决方案的输出文件夹,以便在我运行单元测试时可以找到它们。这可能会导致大量空间浪费和与重复的 dll 混淆,而每个 dll 的主拷贝应该进入安装程序。

是否有更好的方法来添加额外的搜索目录?

我正在考虑有一个 TEST_MODULE_INITIALIZE,它将 AddDllDirectory() 然后将 dll 标记为延迟加载,以便在它们加载时搜索添加的 dll 目录。但是,我认为这行不通,因为您必须将 dll 标记为在 exe 中延迟加载。但是,exe 是我无法控制的测试运行器。

最佳答案

您的考虑是完全正确的。您可以通过这种方式在 VS testrunner 上下文中加载依赖 dll,就像一把枪一样:

1) 设置您的测试项目以将所有必需的 dll 部署到输出目录中(例如借助预\后构建步骤)

2) 在测试项目设置中设置延迟加载dll。 (测试project-properties-Linker-Input-Delay loaded dlls = enter list of dependency dlls)

3) 设置搜索dll 的目录。它可以是 TEST_MODULE_INITIALIZE 或 TEST_CLASS_INITIALIZE。简单的情况是为此目的使用 SetDllDirectory。如果您想使用 AddDllDirectory - 使用它 carefully :

If SetDefaultDllDirectories is first called with LOAD_LIBRARY_SEARCH_USER_DIRS, directories specified with AddDllDirectory are added to the process DLL search path. Otherwise, directories specified with the AddDllDirectory function are used only for LoadLibraryEx function calls that specify LOAD_LIBRARY_SEARCH_USER_DIRS.

关于c++ - 如何为 native 单元测试添加额外的 dll 搜索目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31411685/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com