gpt4 book ai didi

windows - Windows的lua "stub"dll的用途是什么

转载 作者:可可西里 更新时间:2023-11-01 09:46:43 25 4
gpt4 key购买 nike

我正在考虑将 Lua 合并到一个 C++ 项目中,并且对来自 Luabinaries 的分发版中存在的两个二进制文件(lua51.dll 和 lua5.1.dll)感到有点困惑。 .

根据文档...

In Windows your library or applicationmust be linked with a stub library. Astub library is a library with onlythe function declarations that willbind your DLL with the Lua DLL.

为什么?在与第三方 DLL 链接之前,我从来不需要 stub DLL?

最佳答案

stub 库是一个 .lib 文件,而不是 DLL。它包含 DLL 中所有导出函数的函数声明,这些函数只是将调用转发到 DLL 本身。因此,如果您构建一个要与 lua51.dll 链接的应用程序,您告诉链接器与 lua51.lib 链接,所有对导出函数的调用都将被转发到 DLL。如果不这样做,链接时会出现很多“未解析的外部符号”错误。

这仅在与 DLL 静态链接时才需要(以便在应用程序运行时自动加载)。使用 LoadLibrary 动态加载 DLL 时不需要它。

关于为什么他们有两个不同的DLL,手册是这样说的:

The LuaBinaries DLL packages have a dll proxy called "lua51.dll". It can be used to replace other "lua51.dll" released by other distributions. It will simply forward calls to the "lua5.1.dll". There is no compiled source code involved in the forwarding.

基本上,一些现有应用程序链接到 lua5.1.dll,而其他应用程序链接到 lua51.dll,并且他们希望同时支持它们。在任何情况下,这都与 stub 库无关。

关于windows - Windows的lua "stub"dll的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2761751/

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