从C函数调用时,C ++函数的未定义引用

时间:2015-01-08 06:55:21

标签: c++ c extern

我试图从C函数调用C ++函数,我看到一个未定义的函数写入.cc文件,下面是代码。我错过了什么?

externcpp.cc

#include <iostream>
 #include "example.h"
 using namespace std;
 int main ()
 {
    cout << "I am " << __func__ << "In File " << __FILE__;
    return 0;
 }
 void example_fun()
 {
    cout << "I am" << __func__ << "in File __FILE__";
 }

externc.c

#include <stdio.h>
#include "example.h"
int test1()
{
    printf(" I am [%s] and from File [%s]\n",__func__,__FILE__);
    printf("Calling C++ Function from C\n");
    example_fun();
    return 0;
}

example.h文件

#ifndef EXAMPLE_H
#define EXAMPLE_H

#ifdef __cpluscplus
#define EXTERNC extern "C"
#else
#define EXTERNC
#endif

EXTERNC void example_fun();
#endif

并使用以下命令进行编译和链接

g++ -c -o externcpp.o externcpp.cc -Wall
gcc -c -o externc.o externc.c -Wall
g++ -o output externcpp.o externc.o

此致

1 个答案:

答案 0 :(得分:9)

它应该是#ifdef __cplusplus,而不是上面代码中的#ifdef __cpluscplus。检查你的拼写。