gpt4 book ai didi

c++ - C 结构 ABI 兼容吗?

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

假设我有一个基于 VC++ 的可执行文件和库。为了使两个组件的构建过程真正独立,在两个二进制文件之间交换数据时,我只能使用普通的旧 C 类型。

例如,将 std::string 从库返回到可执行文件是不可能的,因为新的 MSVC 运行时需要更新两个组件。因此,我不得不求助于 char* 类型。

但是,我想知道结构如何适合图片。如果我用 C 类型填充它们,它们是否仍符合 ABI 标准?或者该结构是否采用了某些技术,使它们与类处于同等地位,从而使它们不符合 ABI?如果我通过指针而不是普通返回类型返回这样的结构,会有什么不同吗?

感谢您的建议。

最佳答案

保证您可以在 C++ 代码中使用 C 编译的 C 结构。这是从 C++ 代码使用 C 库的基础。例如,您可以使用 posix api 数据结构,从 C++ 代码中填充它们,并将其与 C++ 代码中的 C 函数一起使用。

如果那行不通,您将永远无法再使用来自 C++ 的任何 C 库。不敢相信这种情况会成为现实:-)

您必须注意使用 extern "C" 进行名称分解,并且不要使用打包选项手动更改数据结构的布局。就是这样!

关于c++ - C 结构 ABI 兼容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25392605/

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