gpt4 book ai didi

windows - DLL 链接器问题

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

我正在编译一个 DLL 两次(一次用于 x86,一次用于 x64)并且我已将/ENTRY 设置为“DllMain”。我正在使用/MT 运行时库选项静态链接运行时库。这在进行 x86 构建时一切正常,但 x64 构建失败并出现以下情况:

error LNK2019: unresolved external symbol main referenced in function __tmainCRTStartup
{project directory}\LIBCMT.lib(crt0.obj)

为什么这适用于 x86 构建而不适用于 x64 构建?我在这里缺少什么吗?

最佳答案

不是直接的答案,但它可能是严格相关的:如评论中所述,您应该避免以这种方式更改入口点:通常真正的入口点由 CRT 提供的“假”DllMain 获取以初始化其内部数据结构(如 here 所述),所以你绕过了它。大小减小可能是由于删除了 CRT 初始化代码。

您的 dll 正在使用未初始化的 CRT,这非常糟糕。您应该保留默认入口点,顺便说一句,这应该可以解决您的问题。

顺便说一下,请注意实际上您可以在没有 CRT 的情况下创建一个 dll(而且它会变得非常小),但是您根本不应该使用 CRT ,甚至没有链接到它(/NODEFAULTLIB 开关)。这意味着您可以只使用您明确链接的库(例如 Windows API),但我怀疑您会失去一些 C++ 功能(我认为至少是异常和 RTTI)。

关于windows - DLL 链接器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681065/

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