C++ 链接器可以在没有函数原型的情况下从函数调用中推导出符号吗

问题描述 投票:0回答:1
如果我有一个带有某些类和函数实现的静态库,是否可以在没有声明静态库中实现的函数和类的头文件的情况下链接到它?链接器是否只能从函数调用中推导出符号? 问题是静态库中的类从仅标头库调用函数(实现位于头文件中),因此如果我在使用静态库的代码中包含我的仅标头库,我最终会得到两个实现这些功能。

非常感谢

我尝试将静态库添加到链接器输入(Visual Studio)并简单地调用函数,但它不喜欢那样。 当我包含头文件时,我得到“已经定义在”错误

c++ linker static-libraries
1个回答
0
投票
无需原型即可调用函数,这是 C 的一项功能。 C++ 链接器无法做到这一点,因为符号名称取决于参数类型和实体位置(命名空间、类成员等)。主要原因是 C++ 中允许

参数多态性,即函数重载。

如果仅标头库使用静态库实体的外部依赖项,则必须为其提供带有原型的标头,或将实现隐藏在桥接模式后面。在任何一种情况下,它都不再是纯粹的标题。

© www.soinside.com 2019 - 2024. All rights reserved.