使用IGRAPH面向对象编程

时间:2015-01-21 22:48:15

标签: c++ c 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

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

就这样做

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

c ++编译器会破坏函数名称,所以当搜索库中找不到该函数时,如果这样做,那么igraph.h中声明的每个函数都将具有阻止名称重整的c连接。