Уважаемые Гуру прошу Вашей помощи.
есть библиотека написанная на С++ и собрана g++
//file func.cpp
#include<iostream>
void func()
{
std::cout<<"Hi\n";
}
g++ -shared -fPIC -o libtest func.cppи есть программа написанная на чистом си
//file main.c
extern void func();
int main()
{
func();
return 0;
}Вопрос:
как подключить библиотеку?
при компиляции
gcc main.c -L. -ltest -o test
получаем
gcc main.c -L. -ltest
/tmp/ccEMHBvz.o: In function `main':
main.c:(.text+0x12): undefined reference to `func'
collect2: выполнение ld завершилось с кодом возврата 1c g++ линкуется нормально.
Но для решения задачи нужно собрать приложение именно с gcc
extern "..."
name mangling
overloading
>extern "..."
>name mangling
>overloadingСпасибо
вот код
#include<iostream>
extern "C" {
void f1()
{
std::cout<<"Hi\n";
}
}
>для решения задачи нужно собрать приложение именно с gccНадо включить c++ библиотеку и взять c++ места в extern "C" {}
gcc ... -lstdc++
Тоесть наоборот, extern "C" нужен для включения C в C++, для C ничего делать не нужно.