【发布时间】:2010-12-06 20:18:55
【问题描述】:
我想从我自己的 DLL 中调用一些第三方 DLL 例程。我只是不确定如何在 C++ 中做到这一点。
【问题讨论】:
-
当然。它是什么类型的 DLL?
我想从我自己的 DLL 中调用一些第三方 DLL 例程。我只是不确定如何在 C++ 中做到这一点。
【问题讨论】:
您可以像在可执行文件中一样在 DLL 中使用 load-time dynamic linking 或 run-time dynamic linking。唯一的限制是不要从 DllMain 函数中调用 LoadLibrary 以避免死锁。
【讨论】:
LoadLibrary 和 GetProcAddress 是您的朋友之一......
【讨论】:
如果此 dll 有 .lib 文件,您只需将其添加到链接器输入并静态导入其功能。如果没有,有一些工具可以从 .dll 生成 .lib 文件。
您还可以使用LoadLibrary 和GetProcAddress 动态导入函数。
MSDN 说你不能从 DllMain 调用 LoadLibrary。但在大多数情况下,没有什么不好的事情发生。
【讨论】:
通常,您通过项目中的导出库链接到 DLL。然后,您的程序可以调用 DLL 函数,前提是 DLL 在运行时位于程序的路径中。
通过手动加载 DLL 并获取所需的函数地址,也可以(但需要做更多工作)来避免所需函数的链接时解析,但如果第三方 DLL 支持通常的链接时间机制。
【讨论】: