Неопределенная ссылка для функции C ++ при вызове из функции C

0

Я пытаюсь вызвать функцию 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

С Уважением,

  • 0
    Пожалуйста, добавьте сообщение об ошибке.
  • 0
    Почему замыкающая { на вашем #define EXTERNC? Кажется, никогда не будет закрытым.
Показать ещё 6 комментариев
Теги:
extern

1 ответ

9

Он должен быть #ifdef __cplusplus, а не #ifdef __cpluscplus как в вашем коде выше. Проверить написание.

  • 2
    Это ошибки, на которые вы можете смотреть часами, не видя их. Хороший улов!
  • 2
    Да, это была ошибка после внесения этого изменения, я получил требуемый результат благодаря всем. Спасибо @AndreyT

Ещё вопросы

Сообщество Overcoder
Наверх
Меню