abi相关内容

可以使用内联命名空间来保持共享库中的向后兼容性?

C ++内联命名空间的基本原理是源和二进制兼容性(参见Herb Sutter的论文 N2535 ),但在引入内联命名空间时,我还无法找到现有库的保留二进制兼容性的好例子,是可能的。 (有关更多信息和源兼容性示例,请参阅 this question ) (解决相关问题,使用内联命名空间引入不兼容性,请参阅这个问题) 如果这是我们当前的库(例如mylib.dll),它是与客户共享的, ..
发布时间:2016-10-28 05:33:16 C/C++开发

是函数参数constness不匹配吗?

关于使用 const 函数参数我听说在某些OS X系统中,参数的常数被转换为函数签名。例如,如果在接口头文件中有如下声明: int f(int argument); 但如果只实现此功能: int f(int const argument); 那么这可能导致OS X上的链接失败方式对C ++函数签名包括参数的常量。 这是正确的mangl ..
发布时间:2016-10-27 22:08:37 C/C++开发

混合使用C ++ ABI来构建旧的库

这里的情况,我有一个C ++代码库使用最近的GCC(4.3.3),但我需要链接到一个旧的库,它是使用GCC 3.2.3构建的。没有更新版本的库可用,我不能去没有它,它是关闭源,所以它不能重建。 这似乎提出了一个问题,因为有GCC 4.3.3和3.2.3之间的ABI不兼容,所以我试图看看我的选项是用于解决这个。 一些额外的细节: 我可以使用-fabi-version = 1重建我的 ..
发布时间:2016-10-27 01:44:14 C/C++开发

C ++库跨越不同的编译器

我使用MinGW(4.8.0 dw2 posix)编写了一个C ++库。此库用于另一个使用另一个编译器(在本例中为msvc)的C ++项目。 参考这我重新设计了我的C ++库。有两件事情我不知道该怎么办: 我可以使用命名空间吗? 我注意到MinGW上的time_t是32位,而msvc是64位。我可以做什么? 1) 这打破了ABI: // Window.h ..
发布时间:2016-10-24 17:03:37 C/C++开发

如何解决clang(或gcc)中的C ++名称?

我想写一个快速和脏的诽谤的诽谤。我找到了一个一段代码,它使用 abi :: __ cxa_demangle ,但我不知道它需要哪个头。显而易见的选择是 ABI.h ,但是: demangle.cpp:2:10:fatal error:'ABI.h'file not found #include ^ 我需要使用 abi :: __ cxa_deman ..
发布时间:2016-10-23 20:08:23 C/C++开发

Visual Studio C ++ dll库崩溃在Qt应用程序

我有一个问题在MS Visual C ++ DLL库和Qt程序之间共享“std :: string”数据。 我有: 在Visual C ++ 2010 Express中编写的DLL库,它导出一个方法: extern“C”__declspec(dllexport)int Init(ITest * commandTest); 抽象接口“ITest”和实现它的类: ..
发布时间:2016-10-23 14:26:43 C/C++开发

Java本机接口(JNI)是否受C ++ ABI兼容性问题的影响?

Java Native Interface(JNI)是否受C ++ ABI兼容性问题的影响? 我正在开发一个Java应用程序。我想使用Java本机接口(JNI)来调用C ++库中的函数。我可以访问的C ++库的代码,我可以重建它,但我可能需要。 (例如,我可以静态链接C ++运行时。) 我可以要求我的用户拥有JRE 6或更大,但是我不能要求他们有任何 同事指示我访问此博客文章: ..
发布时间:2016-10-23 11:56:03 Java开发

如何暴露STL列表DLL边界?

我有一个DLL需要访问存储在主机应用程序的STL容器中的数据。因为C ++没有标准的ABI,我想支持不同的编译器,应用程序和DLL之间的接口基本上必须保持原有的数据。 是相对直接的。您可以简单地返回向量的内存块,因为它保证是连续的: //返回向量 ..
发布时间:2016-10-22 17:44:59 C/C++开发

Visual Studio 2012更新破坏C ++ ABI?

当Microsoft最初于2012年9月发布Visual Studio 2012时,他们宣布了更经常地为Visual Studio提供更新的计划。从那时起,他们发布了 2012年11月的Visual Studio 2012更新1(Visual Studio 2012.1)和 Visual Studio 2012 Update 2(Visual Studio 2012.2)。 我的问题是:更新 ..
发布时间:2016-10-22 17:40:38 C/C++开发

由于符号与abi :: cxx11链接问题?

我们最近因为 GCC 5.1,libstdc ++和Dual ABI 。看起来 Clang不知道GCC内联命名空间更改,因此它生成代码基于一组命名空间或符号,而GCC使用另一组命名空间或符号。在链接时,由于缺少符号而出现问题。 如果我解析 Dual ABI 页面,它看起来像是在 _GLIBCXX_USE_CXX11_ABI 和 abi :: cxx11 有一些额外的困难。有关详情,请访问红帽 ..
发布时间:2016-10-20 22:04:42 服务器开发

Itanium ABI在什么程度上真正指定了填充和对齐?

我被告知: [ABIs]保证结构的精确布局,每个成员的字节偏移, 但我一直相信填充和填充对齐未指定且不可靠。 Itanium ABI (GCC使用)实际上指定了这些东西(只要我可以告诉,它超出指定范围后不会显示) 如果是,如 __ attribute__ ((packed))适合吗?它们最终通过改变事物的一致性来破坏ABI? 或者,正如引用所暗示的,在工具链之间仅仅包 ..
发布时间:2016-10-19 20:13:32 C/C++开发

g ++总是向后兼容“旧”静态库?

我有一些静态库,我不是所有者,用旧版本的g ++编译(4.3.2,c ++ 11 / c ++ 0x未激活)。 当我用g ++ 4.6(无c ++ 11)编译我的代码,并使用这些 静态库链接它(使用g ++ 4.6),它链接很好,我似乎不在运行时获取任何问题(未测试的一切)。 所以我试着认为向前兼容性是好的。 现在我想编译我的代码与gcc 4.8与c ++ 11和仍然链接它与那些相 ..
发布时间:2016-10-14 12:36:33 C/C++开发

GCC ABI兼容性

据我所知,不可能链接使用不同版本的GCC的应用程序二进制接口(ABI)的库。每个版本的GCC是否有ABI更改?如果我使用GCC 4.3.2,是否可以链接一个用4.3.1构建的库?是否有一个列出所有可以组合GCC版本的方法的矩阵? 解决方案 官方ABI页面指向 ABIcheck 。这个工具可以做,你想要什么。 ..
发布时间:2016-10-13 12:08:23 C/C++开发

关于法律论点的几个问题的printf("%S&QUOT,...)

我创建一个修改printf的实施,我不知道对这些问题的答案。 请问零工作作为一个空字符串? (为的printf(“%S”,0)允许?) 我猜没有,因为0是一个 INT 。但后来这提示了这个问题: 确实 NULL 工作作为一个空字符串? (IS 的printf(“%S”,NULL)允许?) 从逻辑上讲,我觉得应该是肯定的,因为 NULL 意味着一个指针;但很多实现似乎的#define ..
发布时间:2016-08-22 16:57:14 C/C++

çABI与LLVM

我已经得到了与LLVM写一个编译器,我希望我的ABI的兼容性。例如,我发现很难找到真正的Windows的x86或Linux对于C ABI规范文件。而且我发现的那些解释在RAX / EAX /等​​方面,而不是我可以使用IR条款。 到目前为止,我想我已经想通了LLVM对待invisibly-也就是说,它认为自己的成员每一个不同的参数聚集。因此,例如,在Windows 64,如果我要处理的集合类的文 ..
发布时间:2016-08-22 16:45:47 C/C++

如何调用的函数返回到调用者,被调用后?

我读到,当一个函数调用是由程序进行,被调用函数必须知道如何返回到它的调用者。 我的问题是:如何被调用的函数知道如何返回到它的调用者?有没有通过编译器的幕后工作机制? 解决方案 编译器遵循特定的“调用约定”,定义为您的目标ABI的一部分。该调用约定将包括系统知道返回到什么地址的方法。调用约定通常需要硬件对过程调用的支持优势。英特尔,例如,返回地址被压入堆栈: ...处理器将跟随在 E ..
发布时间:2016-08-22 16:39:49 C/C++

ABI什么,如果有的话,限制[U]还会将intmax_t的大小?

与1999年版开始,ISO C标准定义了一个标准的头< stdint.h> 定义,除其他事项外,该类型定义还会将intmax_t 和 uintmax_t型。这些候,分别为“A(签字|无符号)整数能够重新presenting中的任何类型的任何值(有符号|无符号)整数类型。” 例如,如果是典型,最广泛和无符号整数类型得到long long int 和无符号长long int类型,这两者通 ..
发布时间:2016-08-22 16:37:52 C/C++

什么是每个CPU拱真正的ELF ABI TLS的要求?

在线程本地存储 乌尔里希Drepper的论文概述了TLS ABI为几个不同的CPU架构,但我中号发现它不足以作为实施TLS的原因有两个基础: 它省略了许多功能,如ARM,MIPS等重要archs(同时还包括像安腾一堆完全无关的那些的) 更重要的是,它混合了很多与ABI实施细则,使之很难说是必需的互操作性哪些属性,哪些只是他实现的各个方面。 作为一个例子,为i386的唯一实际ABI要 ..
发布时间:2016-08-18 23:55:07 服务器开发