小编Bid*_*ids的帖子

如何将第三方Windows DLL组织到应用程序文件夹中的子文件夹中?

我们有一个应用程序,它依赖于许多第三方DLL组.不幸的是,这些第三方DLL的编写者都没有一致地命名它们,因此很难看出哪个DLL是哪个DLL的一部分.

为了尝试管理这个,我们希望将第三方DLL组放在我们的应用程序文件夹中的文件夹中,而不是像这样的应用程序旁边.

--> Application Folder
    --> Application.exe
    --> MyDLL1.dll
    --> MyDLL2.dll
    --> Third Party 1 DLL folder
        --> Third Party 1 DLL 1.dll
        --> Third Party 1 DLL 2.dll
        --> Third Party 1 DLL 3.dll
    --> Third Party 2 DLL folder
        --> Third Party 2 DLL 1.dll
        --> Third Party 2 DLL 2.dll
        --> Third Party 2 DLL 3.dll
Run Code Online (Sandbox Code Playgroud)

我的问题是如何让动态链接器找到它们并加载它们?

我们可以使用LoadLibrary()和GetProcAddress()手动执行此操作,但这非常繁琐.看起来我们可以通过清单和"探测"来做到这一点,但这似乎只是Windows 7(我们需要在XP及更高版本上工作).

更新

我们最终使用清单来做到这一点(感谢@Chris) - 如果有人在寻找解决方案,还有其他一些我们不得不跳过的箍!

首先,我们的"程序集"实际上有几个DLL,我们链接到那个DLL然后链接到其他DLL.所有这些DLL都需要将程序集依赖项添加到它们的清单中(您可以使用mt.exe执行此操作而无需访问这些DLL的源代码).

其次,程序集需要与DLL一起使用,而不是与EXE一起 - 我们的DLL实际上是一个已经存在于应用程序子文件夹中的插件.

这是我们的最终布局:

--> Application Folder
    --> Application.exe
    --> Plugins folder
        --> …
Run Code Online (Sandbox Code Playgroud)

windows dll

5
推荐指数
1
解决办法
2377
查看次数

标签 统计

dll ×1

windows ×1