Lib和DLL链接到exe错误"无法读取0x300"

mmu*_*phy 12 c++ deployment dll visual-studio

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

Cia*_*ing 30

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

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

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