1
12
这一点很重要,这样编译器就不会将mangle命名为mangle。C++使用名称修改来区分函数与操作符重载。 运行“/Ur/bin /nm”,以二进制来查看C++对函数名的作用: _ zst8_破坏9_u gnu_cxx17_u normal_u iteratoripist6矢量是ieeeevt_s7_said0_e 外部“c”防止这个名字被弄坏。 IIRC,这使得程序可以在运行时动态链接符号。“插件”类型的架构很常见。 |
2
4
编译C++时,方法名称会改变(Mangle)-并且不能从另一个使用C的DLL/EXE调用该方法。 为了保留类和方法名,您需要将它们编译为“c”,而不需要名称损坏。 库仍然是一个C++库,但是它将一些声明(在Extn中的一个)“块”暴露为C方法。 |
3
3
这个
|
4
0
不利于使用
|
5
0
这个
这意味着C和C++编译器都会在它们的目标文件中产生相同的符号,因此无论哪个编译器为声明的函数生成目标代码,所有的目标文件都会成功链接,因为符号具有相同的链接和相同的名称。 对于静态链接或与共享库的链接都不应该有任何影响。 |
CaTx · 使用带有一个大于号和两个大于号的回波的区别 2 年前 |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
Ty Q. · 分段故障GLFW3/GLAD 2 年前 |
ShortArrow · 如何使用git管理链接源文件? 2 年前 |
Bastien L. · 多Linux Grafana集成 2 年前 |