Я пытаюсь вызвать функцию C++ из функции C, и я вижу неопределенную ссылку на написанную функцию .cc-файл. Ниже приведен код. Что мне не хватает?Неопределенная ссылка для функции C++ при вызове из функции C
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
С уважением,
Пожалуйста, сообщите об этом ошибке. – user1766169
Почему существует завершающий '' '' '' на '#define EXTERNC'? Кажется, он никогда не закрывается. –
externc.o: В функции 'test1' externc.c: (.text + 0x2d): undefined ссылка на 'example_fun' collect2: error: ld return 1 status status – user3631987