【问题标题】:Why isn't memcpy in the import table?为什么导入表中没有 memcpy?
【发布时间】:2018-06-13 22:39:04
【问题描述】:

当我在符号列表中看到 memcpy 时,我正在使用由 Visual Studio 生成的 pdb,因此我使用 dumpbin 检查可执行文件中的导入表,但那里没有对 memcpy 的引用。

memcpy 不是从 crt 库导出的函数吗?如果是这样,为什么我在 dumpbin 的输出中看不到它?

【问题讨论】:

    标签: c++ symbols memcpy pdb dumpbin


    【解决方案1】:

    memcpy 通常被视为intrinsic,尤其是在复制小项时,因此完全编译为内联代码。

    尝试复制更大的内容。然后你可能会在导入表中看到它。

    【讨论】:

    • 这真是!!我尝试了一些兆字节,现在它是从 VCRUNTIME140.dll 导入的,如果你不介意我可以问你:当我使用 /MT 构建静态可执行文件时,memcpy 是否总是编译为内联,因为我注意到当我使用 c++ std 时函数我得到了一些 winapi,它们是导入表中的包装器,但不是 memcpy 的情况,它不依赖于任何 winapi 函数
    • 我怀疑编译器在决定为memcpy () 的任何特定调用发出什么代码时是否关心该标志,因为(我相信你知道)它所做的只是控制程序是否静态或动态链接。如果您想自己检查一下,可以进一步试验here。如果你想奖励我的分享,你可以接受我的回答——这是这里的惯例。谢谢。
    • @dev65 我认为你还没有代表投票,但你可以accept it。 (我无耻 :)
    猜你喜欢
    • 2022-07-07
    • 2021-07-24
    • 2022-12-18
    • 1970-01-01
    • 2021-11-13
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多