gpt4 book ai didi

c++ - Lib 和 DLL 链接到 exe 错误 "cannot read at 0x300"

转载 作者:IT老高 更新时间:2023-10-28 23:10:11 25 4
gpt4 key购买 nike

我有一个关于如何使用 .dll/.libs 的一般性问题。我正在创建一个用于我的项目的 .dll,但是,我注意到当我去编译时,我需要静态链接与 .dll 关联的 .lib 以供项目编译(否则会出现链接错误“ fatal error LNK1107:无效或损坏的文件:无法读取 0x300")。所以以后当我重新分发我的项目,然后在将来更新它时,我是否需要发布一个新的 .exe 和一个新的 .dll 而不仅仅是一个新的 .dll?如果是这样,那为什么还要使用 .dll 呢?

最佳答案

.lib 包含由 DLL 导出的函数等的 stub 。您将 .lib 链接到您的 EXE 中,现在您的 EXE 知道如何调用这些函数。但是当然那里没有任何功能 - 调用无处可去。在加载时,当操作系统加载你的 EXE 时,它也会加载你的 DLL,然后它修补 EXE - EXE 调用 stub 的地方,加载器用调用 DLL 中的实际函数来替换它。

通常您不需要将 .lib 发送给您的客户。但是,如果您的客户想要编写他们自己的使用您的 DLL 的 EXE,那么您需要将 .lib 发送给他们,以便他们可以链接他们的 EXE。

链接器错误 LNK1107 表示您试图链接到 DLL 而不是 .lib。这总是错误的,因为根据定义,DLL 是在运行时动态链接的,而不是在构建时静态链接的。

关于c++ - Lib 和 DLL 链接到 exe 错误 "cannot read at 0x300",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8599539/

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