2012-07-02 48 views
0

目前我正在試圖編譯一個非常基本的程序在C++中使用igraph庫(可以在這裏找到:http://igraph.sourceforge.net/doc/html/ch03s01.html),但它不承認函數來創建和銷燬圖。Netbeans不認識igraph函數

我指定其中igraph.h是路徑,它承認了頭文件很好,但是當我嘗試建立它(使用Netbean的生成生成文件),我得到如下:

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf 
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-MacOSX/igraphtest 
mkdir -p build/Debug/GNU-MacOSX 
rm -f build/Debug/GNU-MacOSX/main.o.d 
g++ -c -g -I/usr/local/include/igraph -I/usr/local/lib -MMD -MP -MF build/Debug/GNU-     MacOSX/main.o.d -o build/Debug/GNU-MacOSX/main.o main.cpp 
mkdir -p dist/Debug/GNU-MacOSX 
g++  -o dist/Debug/GNU-MacOSX/igraphtest build/Debug/GNU-MacOSX/main.o 
Undefined symbols: 
    "_igraph_erdos_renyi_game", referenced from: 
     _main in main.o 
    "_igraph_destroy", referenced from: 
     _main in main.o 
    "_igraph_diameter", referenced from: 
     _main in main.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 
make[2]: *** [dist/Debug/GNU-MacOSX/igraphtest] Error 1 
make[1]: *** [.build-conf] Error 2 
make: *** [.build-impl] Error 2 

有誰知道什麼可能導致這種情況,以及我如何解決它?

回答

0

指定頭文件的位置是不夠的;您還必須將包含igraph庫自身的目錄(如果您使用的是Mac OS X上的文件libigraph.solibigraph.dylib)添加到庫路徑,並通過將-ligraph添加到命令行選項,讓編譯器鏈接到igraph庫。我不知道如何在Netbeans中執行這些操作,但這些是您的編譯器輸出丟失的內容。

+0

我認爲你是對的。我試圖使用NetBeans生成的Makefile,但在寫完所有你提到的東西之後,它就起作用了。 – Erin