Связывание объекта c ++ с объектным файлом c

Предположим, что если у меня есть файл c ++ и c-файл. Создал объектные файлы для них обоих. Теперь мне нужно связать оба в один исполняемый файл. Пока я пытаюсь, он дает ошибки о c ++. Может ли кто-нибудь помочь мне в этом.

3
nl ja de
Нет, нет, если вы не предоставите никакой информации.
добавлено автор user529758, источник
Я использую gcc & g ++ . У меня есть файл cpp, который также содержит некоторые функции stl. Теперь мне нравится использовать эту функцию CPP в другом проекте C . Как это сделать. ??
добавлено автор Kranthi, источник

2 ответы

Для начала все функции в файле C ++, вызываемые из файла C, должны быть помечены extern "C" :

extern "C" int some_function();

Это говорит компилятору C ++ не mangle . имя.

Чтобы продолжить, из источника C вы можете, конечно, не использовать никаких функций C ++, таких как классы, пространства имен, ссылки и другие специальные функции на C ++.

3
добавлено
@Kranthi Вызов функции test из исходного файла C в порядке, и он может содержать как можно больше C ++ определенных вещей (поскольку он компилируется компилятором C ++).
добавлено автор Some programmer dude, источник
Я использовал STL lbraries в своей программе. Из-за этого он дает много ошибок, так как теперь делать привязку.? test.c '#include #include с использованием пространства имен std; extern "C" void test() {vector a; a.push_back (100); } '
добавлено автор Kranthi, источник

Take a look at this page: http://dsc.sun.com/solaris/articles/mixing.html

Статья Смешивание кода C и C ++ в той же программе

Здесь вы найдете всю необходимую информацию:

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

#ifdef __cplusplus
extern "C" {

и так долго ...

0
добавлено