Я пытаюсь скомпилировать функцию в C++, а затем взять выходной файл объекта и скомпилировать его в функцию C. Во время ссылки я получаю сообщение об ошибке. Вот код:Ошибка связи GNU C и C++
row_executor.c:
#include "row_exec.h"
void row_executor(char* row) {
row_exec(row);
return;
}
row_exec.h
#ifndef ROWEXEC_CPP_H
#define ROWEXEC_CPP_H
#ifdef __cplusplus
//fill in C++ code here later
#endif
#ifdef __cplusplus
extern "C" {
#endif
void row_exec(char* rowname);
#ifdef __cplusplus
} //end extern "C"
#endif
#endif
row_exec.cpp:
#ifdef __cplusplus
#include "row_exec.h"
#include <iostream>
using namespace std;
void row_exec(char* rowname) {
cout << "Row name is: " << rowname << endl;
}
#endif
C++ объектный файл генерируется запись Makefile:
row_exec.o: row_exec.cpp row_exec.h
g++ -Wall -c row_exec.cpp
Файл объект C генерируется:
gcc -c -I<include paths> -g -fPIC -DPIC -o row_exec.o row_executor.c
Оба генерируют объектные файлы в порядке, но когда row_executor.o компонуется вместе с кучей других файлов не связанных объектов, соответствующих другим тестам, я получаю следующее сообщение об ошибке:
row_executor.o (.text + 0x1a): В функции row_executor': /LAB/MODULES/rev_13~~/row_executor.c:4: undefined reference to
row_exec» collect2: л.д. возвращается 1 выходной статус марка: *** [hm_prod_rev_16.so] ошибка 1
ли кто-нибудь см. вопрос?
Внимательно прочитайте первый файл! – Olaf
Можете ли вы дать мне подсказку? Это не очевидно для меня. –
Почему downvote? – Phong