我想,以确定是否有可能对一个linux库,C和C++绑定链接。我有一个现有的C++项目被分解成几个库。我想用C绑定扩展这些库,以便我可以在cgo中使用它们。链接到库C和C++绑定
我知道++与外部的“C”语法如何搭配C/C。我有的问题是菊花链式库。我创建这说明我的问题的示例项目:
https://github.com/Shelnutt2/c_cpp_linker_test
在这个项目中,我们有hello.c中,world.cpp这两者都内置到库调用libwords。我可以将libwords链接到libhelloworld,而不会出现问题。尝试构建main.cpp时出现问题,该main.cpp想从libhelloworld调用ac和C++函数(因此也是链接的libwords)
由于C++与C的链接不同,主可执行程序无法找到hello函数
main.cpp:15: undefined reference to `hello'
是否有可能以这种方式对同一库链接或者我需要打破C绑定到自己的包装库?
在我使用的共享库示例项目,但我开到静态链接,如果这是可能的。
没有语言的C/C++。由于显而易见的原因,C不支持'extern“C”'。不清楚你想完成什么。看[问]并提供[mcve]。 – Olaf
@Olaf'语言'C/C++是C和C++的交集。 FWIW,ANSI C89几乎是C++的真正子集,在ANSI C89的K&R书中,所有示例都使用C++编译器进行编译。 –
@ErikAlapää:这简直是无稽之谈! 1)C是C11,ANSI-C早已不复存在。离开身体埋藏。 2)对于C++来说是相同的,这是C++ 14(主要用C++ 11转换)。 3)相同的语法不意味着相同的语义试试'static const int i = 5; int a [i];'在两个类似的'auto int i = 5,a [i];'中。 4)告诉C++是C的超集的人不知道这两种语言中的至少一种不足以写出比“Hello World”更多的语言;至少没有任何生产代码。 – Olaf