我试图将C代码包含到一个简单的C++程序中,但是遇到一个意想不到的问题-当我尝试编译该程序时,g++给出以下错误:

/tmp/cccYLHsB.o: In function `main':
test1.cpp:(.text+0x11): undefined reference to `add'

我搜索了一个解决方案,并找到了本教程:

http://www.parashift.com/c++-faq/overview-mixing-langs.html

我的程序似乎没有什么区别,所以我有点迷路了...

我的C++程序如下所示:

test1.ccp
#include <iostream>
using namespace std;

extern "C" {
#include "sample1.h"
}

int main(void)
{
    int x= add(3);

    cout << "the current value of x is " << x << endl;

    return 0;
}

sample1 header 和函数如下所示:

样本1.h
#include <stdio.h>

double add(const double a);

sample1.c
#include "sample1.h"

double add(const double a)
{
    printf("Hello World\n");

        return a + a;
}

为了进行编译,我首先使用g++编译一个test1.o和使用gcc编译sample1.o(也尝试了g++,但没有区别)
g++ -c test1.cpp

gcc -c sample1.c

那按预期工作。之后,我尝试像这样链接程序:
g++ sample1.o test1.o -o test

这是我得到上面提到的错误的地方
test1.cpp:(.text+0x11): undefined reference to `add'

我有一种感觉,我想念一些重要的东西,但是看不到。

任何帮助深表感谢!

问候

朱尔斯

最佳答案

它按预期工作。确保您没有意外用sample1.c编译g++

关于c++ - 在C++中包含C代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13477807/

10-10 16:12