C++ 和 C 是不是使用相同类型的链接器?

     2023-02-17     133

关键词:

【中文标题】C++ 和 C 是不是使用相同类型的链接器?【英文标题】:Do C++ and C use the same kind linker?C++ 和 C 是否使用相同类型的链接器? 【发布时间】:2017-02-19 23:20:55 【问题描述】:

如题,C++和C在链接过程中是否使用同一种链接器?还有,对于C++和C的编译器,C++编译器是建立在C编译器之上的吗?

【问题讨论】:

链接根本不是编译过程的一部分。链接是一个完全不同的过程,它发生在编译完成之后。如果 C++ 编译器是在 C 编译器之上构建的,或者它是从头开始构建的,则取决于我们正在谈论的编译器。其中许多是封闭源代码,因此我们没有直接的了解方式。此外,这不是 C++ 或 C 问题。 gnu 编译器套件:是的,gcc 和 g++ 使用相同的链接器:ld @VadaPoché 为什么这不是 C++ 或 C 问题?它与代码无关,与编译无关,但如果不链接大多数代码,大多数编译都是无用的。恕我直言,标签在这里完全相关 我猜你的意思是“kind of”而不是“kind”,后者有同情的意思。但是我不敢编辑,因为我无法决定要么完全删除它,要么将其更正为“某种”,因为那是完全不同的问题 不仅 C 和 C++ 使用相同的链接器,而且(至少对于 Microsoft 品牌而言),相同的链接器用于 Fortran、COBOL 以及 Microsoft 生产的大多数其他编译语言。跨度> 【参考方案1】:

两种实现都使用相同的链接器。但是,C++ 必须对所链接事物的名称和类型进行编码,以支持函数重载,从而不能将它们与错误的函数链接。所以,如果你有两个这样的 C++ 函数:

 void func( int );
 void func( int, double);

然后 C++ 编译器将为这些函数生成名称,例如 func_intfunc_int_double。生成的确切名称是编译器特定的,C++ 标准没有指定。由于 C 不支持重载,因此 C 中不需要这种机制,但如果您想将 C++ 代码与 C 链接起来,则需要关闭这种所谓的名称修饰,这就是 extern "C" 构造所做的。

【讨论】:

混合 C 和 C++ 的库/链接器问题

...程序编写一些C和C++基础架构。目前它正在进行中,包括使用Lua进行配置解析、日志记录功能和使用我自己的网络协议/消息传递API的客户端/服务器API。我已将代码组织到两个库中:一个用于C代码(libmarlin.so),另一个用于C++代码 查看详情

在 C 和 C++ 中,链接器如何找到具有已实现函数的正确文件?

...用C编写的代码。我习惯于Java,因此我不明白C编译器如何使用已实现的方法找到正确的源文件。例如,如果我将sample_c1.cpp文件与Main.cpp放在 查看详情

c++迭代器的使用和操作总结(代码片段)

...一种检查容器内元素并遍历元素的数据类型。C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只用少数容器(如vector)支持下标操作访问容器元素。一.定义和初始化... 查看详情

C++ 抽象类模板 + 特定类型的子类 = 链接器有问题

】C++抽象类模板+特定类型的子类=链接器有问题【英文标题】:C++abstractclasstemplate+type-specificsubclass=troublewithlinker【发布时间】:2010-05-0510:18:52【问题描述】:有问题的项目是关于相互通信的不同端点。端点发送事件(超出当前问... 查看详情

C 和 C++ 中类型的互操作性

...同?不用说,这当然是一个纯粹的理论问题。C和C++标准使用相同的语言来定义基本类型。但是,尽管Fortran2003清楚地表明了这一点useISO_C_BINDINGinteger(kind=c_int 查看详情

C 文件中的 C++ 文件中的链接器错误调用函数

...我正在尝试在Linux环境中执行C和C++中的基本代码。我正在使用eclipse来运行它。当前项目创建为C项目。我要做的就是从同一文件夹中的不同文件调用一个函数。我有我的主要在sample.c,在主要我想在A.c中调用函数sum 查看详情

使用 opencv 和 C++ 的链接器出现问题 - 未定义参考

】使用opencv和C++的链接器出现问题-未定义参考【英文标题】:IssuewiththelinkerusingopencvandC++-UndefinedReference【发布时间】:2019-08-0623:59:07【问题描述】:有几个类似的问题,但他们似乎都有不起作用的答案。我已将opencv4安装到Ubuntu... 查看详情

C++ 使用指向相同函数的指针作为模板参数是不是总是会导致相同的实例化?

】C++使用指向相同函数的指针作为模板参数是不是总是会导致相同的实例化?【英文标题】:C++Willusingapointertothesamefunctionasatemplateparameteralwaysleadtothesameinstantiation?C++使用指向相同函数的指针作为模板参数是否总是会导致相同的实... 查看详情

c++和java语言有的相同点和不同点

...,JAVA却没有这样的概念Java与C++都是面向对象的语言,都使用了面向对象的思想(封装、继承、多态),由于面向对象由许多非常好的特性(继承、组合等),因此二者有很好的可重用性。主要不同点:1、Java为解释性语言,其... 查看详情

使用 C++ 的 SOIL 库链接器错误问题

】使用C++的SOIL库链接器错误问题【英文标题】:TroublewithSOILlibrarylinkererrorusingC++【发布时间】:2016-05-1920:09:18【问题描述】:(您好,这是我的第一篇文章,我使用的是DevC++IDE5.11)我包括了头文件SOIL.h和链接器:-lSOIL。该程序... 查看详情

C++ - 虚拟析构函数和链接器错误

】C++-虚拟析构函数和链接器错误【英文标题】:C++-virtualdestructorsandlinkererrors【发布时间】:2011-12-2221:23:03【问题描述】:我得到了我写的这个界面:#ifndef_I_LOG_H#define_I_LOG_HclassILogpublic:ILog();virtual~ILog();virtualvoidLogInfo(constchar*msg,..... 查看详情

指定要生成的备用编译器和链接器

...cc4.8),并且最近在它自己的目录中构建并安装了5.2。我想使用一个使用CC和CXX显式编译但使用隐式内置规则链接.o文件以构建可执行文件的makefile构建一些C++程序。当我在makefile上运行make时, 查看详情

类的静态成员是不是可以与 C++ 中它所属的类具有相同的类型

】类的静态成员是不是可以与C++中它所属的类具有相同的类型【英文标题】:CanastaticmemberofaclassasthesametypeastheclassitismemberofinC++类的静态成员是否可以与C++中它所属的类具有相同的类型【发布时间】:2011-06-1518:13:26【问题描述】... 查看详情

如何从 C++ 处理 C 库中不同大小的类型

...述】:我有一个从C++链接到的外部C库。该库定义了一个使用bool的结构,并为C包含了一个typedef。问题是这个typedef使用int,所以(在我的平台上)这个bool的大小不是1字节,而是4字节。当我#include标头并在C 查看详情

tensorrt模型部署实战,英伟达平台,c++和python对比(包含源码)

本文介绍了可以使用C++API执行的TensorRT用户目标和任务。进一步的细节在Samples部分提供,并在适当的情况下链接到下面。假设您从一个已经训练好的模型开始。本章将介绍使用TensorRT的以下必要步骤:从模型中创建TensorRT网络定... 查看详情

tensorrt模型部署实战,英伟达平台,c++和python对比(包含源码)

本文介绍了可以使用C++API执行的TensorRT用户目标和任务。进一步的细节在Samples部分提供,并在适当的情况下链接到下面。假设您从一个已经训练好的模型开始。本章将介绍使用TensorRT的以下必要步骤:从模型中创建TensorRT网络定... 查看详情

C ++迭代器取消引用和前缀递增/递减样式? *--Iter ok 风格是不是明智?

】C++迭代器取消引用和前缀递增/递减样式?*--Iterok风格是不是明智?【英文标题】:C++Iteratordereferenceandprefixincrement/decrementstyle?Is*--Iterokstylewise?C++迭代器取消引用和前缀递增/递减样式?*--Iterok风格是否明智?【发布时间】:2011-... 查看详情

重复符号链接器错误(C++ 帮助)

...我现在正在学习一些CSP(约束满足)理论知识,并且正在使用this库来解析XML文件。我使用Xcode作为IDE。我的程序编译得很好,但是当它链接文件时,XMLParser_libxml2.hh文件出现重复符号错误。我的文件是这样分开的:包含上述XMLPar 查看详情