【问题标题】:dll A calling dll B function in different folder locationdll A 在不同的文件夹位置调用 dll B 函数
【发布时间】:2014-07-15 08:30:39
【问题描述】:

我有 2 个 A 和 B 的 dll,它们都将部署到不同的文件夹位置。

例如,

Dll A in C:\Users\PC\Desktop\Project


Dll B in C:\Users\PC\Desktop\Project\B Folder

dll A如何加载dll B而不是使用LoadLibrary方法?

谢谢。

【问题讨论】:

    标签: c++ dll


    【解决方案1】:

    您不使用LoadLibrary。您使用 B 的头文件和.lib 编译 DLL A 并引用 DLL B。然后让系统加载器解决依赖关系。更糟糕的是,您使用清单 (SxS) 来微调控制要在运行时加载的 DLL。

    LoadLibrray 应该仅在您需要执行运行时功能开关时使用,当您需要仅在 DLL 存在并且可能是某个版本时才需要表现出某种行为时。一些许可方案可能需要动态加载,但几乎总是可以更好地解决。操作系统依赖项(例如,在 XP 上以一种方式运行,在 Win7 上以另一种方式运行,以利用较新的操作系统的功能)是可接受的LoadLibrary 用法。

    【讨论】:

    • 您好,感谢您的回复。我刚刚做了一个示例并尝试了您建议的解决方案。但是,当我尝试运行我的示例 exe 时,它​​显示“需要使用 exe 定位 dll 相同的位置”,您可以从我的 skydrive onedrive.live.com/… 下载该项目
    • B Folder 添加到PATH,或者最好部署一个清单并指定位置。见Building C/C++ Side-by-side Assemblies
    • 任何简单的解决方案?因为我已经测试过,创建了几个项目 Dll A、B 和控制台。在 dll A 里面包含了一些来自 dll B 的方法然后在控制台项目中添加 dll A 和 lib 并运行。最后,它显示找不到dll B,因为它在文件夹中并且与dll A不同的位置
    • 最后,我没有将B文件夹路径添加到系统PATH,而是将dll添加到系统文件夹(32/64位)stackoverflow.com/questions/12652136/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    相关资源
    最近更新 更多