Использование объектно-ориентированного программирования IGRAPH

У меня библиотека igraph отлично работает для кодов на C.

Однако, когда я пытаюсь скомпилировать код в C ++, у меня возникают неопределенные проблемы со ссылками. Некоторые функции работают, а некоторые нет. Я полагаю, что чего-то не хватает — это включить igraph.hpp, основываясь на моих исследованиях. Хотя я не знаю, как установить эти файлы.

Я пытаюсь скомпилировать следующий пример программы:

#include <iostream>
#include <igraph.h>

using namespace std;

int main() {

igraph_t g;
FILE *ifile;
int i;
igraph_sparsemat_t temp;

ifile=fopen("karate.gml", "r");
if (ifile==0) printf("erro");

igraph_read_graph_gml(&g, ifile);
fclose(ifile);

i=igraph_get_sparsemat(&g, &temp);

return 0;

}

Я компилирую программу с помощью команды:

g++ teste.cc -I/usr/local/include/igraph -L/usr/local/lib -ligraph -o teste

Но эта ошибка возникает:

teste.cc:(.text+0x77): referência indefinida para `igraph_get_sparsemat(igraph_s const*, igraph_sparsemat_t*)'
collect2: error: ld returned 1 exit status

Может кто-нибудь мне помочь?

3

Решение

Просто сделай это

extern "C" {
#include <igraph.h>
}

Компилятор c ++ искажает имена функций, поэтому при поиске в библиотеке этой функции она не будет найдена, если вы сделаете это, то каждая функция, объявленная в igraph.h будет иметь связь c, предотвращающую искажение имени.

4

Другие решения


По вопросам рекламы [email protected]