【发布时间】:2015-08-24 15:05:13
【问题描述】:
我在 DLL 地狱。我有 2 个 DLL,比如说 A.dll 和 B.dll,它们有名称冲突 - 每个都使用相同的 C++ 类名,等等。这两个 DLL 都可用作静态库。
我可以创建一个“包装”DLL,比如 Aprime.dll,它导出与 A.dll 中类似的类、方法等,并将功能委托给 A.lib 中的类,但静态链接到 Aprime .dll?这不是避免名称冲突吗?
我一直在尝试这个,但不确定我是否正确设置了 MSVS 项目。 Aprime.dll 正在生成,但根据 Dependency Walker Aprime.dll 仍在加载 A.dll。
我一直在搜索,但我发现的大多数内容仅适用于 CRT 或 MFC 中的静态链接,它们有自己的开关。
我在 Linker -> Input -> Additional Dependencies 下添加了 A.lib。
我是否遗漏了一些神奇的链接器命令行开关之类的东西?
【问题讨论】:
-
我假设这是一个 c++ 问题,所以我添加了标签。它将获得更多的页面浏览量。如果我错了,请删除标签。
-
如果您不想加载 A.dll,您当然必须删除 A.lib。如果这会导致链接器错误,那么您将不得不做更多的思考。
-
汉斯,我不明白 - A.lib 不是静态链接文件吗?
-
请注意,Windows 并不关心 DLL 中的名称冲突。例如。他们都倾向于拥有
DllMain。
标签: c++ visual-studio dll