gpt4 book ai didi

c++ - 部分外部链接

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:43:59 26 4
gpt4 key购买 nike

我有以下问题需要处理:

  • 有外部组件编译成.lib文件静态链接
  • 外部组件需要特定的函数/运算符接口(interface)可用(即函数必须存在于另一个编译单元中)
  • 我不希望不在外部组件中的代码可以访问此函数
  • 我无法控制此特定函数接口(interface)(或访问外部组件源代码的任何部分),它是全局范围内的给定函数

有什么办法可以实现吗?如果重要的话,编译器是 VC++ 2012

编辑:

  • 输出二进制文件应该是单一的,所以 DLL 和类似的文件不会。
  • 是否可以将符号可见性限制在单个 .lib 中的 .obj 文件中,而不是其他 .lib 中?如果可能的话,我会将该函数编译成一个 .lib,然后将其与外部 .lib 重新打包。

最佳答案

这可能无法直接实现。根据定义,静态库不进行链接,而只是为可执行二进制文件提供构建 block ,因此想要公开一个仅供静态库使用的符号是没有意义的。静态库不会“使用”符号 - 只有二进制文件(经过链接)会。

但是,如果将自定义库回调构建到 obj 文件中并将其与静态库一起重新打包,则可以大大减少他人使用自定义库回调的机会。 LIB can do that.没有其他人可以访问您的自定义回调的源代码或 header ,但是如果有人破解了它的确切符号名称(我认为这是您要防御的),该实现仍将从库中导出。

关于c++ - 部分外部链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289097/

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