【问题标题】:gcc - linking multiple c files to a c++ filegcc - 将多个 c 文件链接到一个 c++ 文件
【发布时间】:2012-01-29 21:10:26
【问题描述】:

如何将 2 个 c 库文件链接到一个 c++ 文件?

现在我正在这样做:

> gcc -c file1.c (this works fine) 

> gcc -c file2.c ( this works fine)

> g++ -c myc++file.cpp (this works fine)

> g++ -o program myc++file.o file1.o file2.o

->我在最后一个错误中说它们是对 myc++file.o 中函数的未定义引用,但该函数是在 file2.o 中定义的。出了点问题,但我就是想不通。

有什么想法吗?

【问题讨论】:

    标签: c++ c gcc g++


    【解决方案1】:

    这个函数是static吗?

    你在myc++file.cpp中使用了extern "C"吗?

    如果答案是noyes,请给我们看一些代码。

    (顺便说一句,尝试使用nm检查该函数是否真的在file2.o中)

    【讨论】:

    • 从技术上讲,你们俩都是对的,非常感谢您的快速回复。我看到你第一个回复。对于其他有同样问题的人,这个答案很好,然后也看看这个链接:stackoverflow.com/questions/3789340/…
    【解决方案2】:

    您需要在函数声明中使用extern "C"
    当 C++ 看到一个外部函数时,它会破坏名称,以识别参数和返回值类型。尝试将其与 C 代码链接时,名称不匹配。
    extern "C" 告诉 C++ 不要破坏名称,因此它将成功与 C 代码链接。

    【讨论】:

      猜你喜欢
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多