2013-04-20 36 views
1

我正在使用SLRE(http://slre.sourceforge.net/)在C程序中進行REGEX檢查。 我包括headerfile然後我以下:使用SLRE的未定義引用lib

void checkRegex() { 
    struct slre slre; 
    struct cap captures[4+1]; 

    if(!slre_compile(&slre, "regularexpression") { 
     printf("error"); 
    } 
} 

我做的編寫與命令:gcc example1.c -o test.cgi -L. -lconfig和我得到這個錯誤:example1.c:(.text+0x1af3): undefined reference to 'slre_compile'

任何想法我做錯了嗎?

+2

你確定,你的鏈接正確的庫? – mohit 2013-04-20 09:40:37

回答

3

我看着庫,它由slre.c和slre.h的,所以你可能編譯它像

gcc slre.c -o slre.o -c 
gcc example1.c slre.o -o test.cgi -L -lconfig 
+0

那麼,如果你總是使用Visual Studio並且在使用其他材料時停止思考^^,那就是問題了,非常感謝! – kaljak 2013-04-20 11:01:37

0

您必須在程序中包含頭文件包括slre.c。 SLRE不是「僅頭文件」庫。


編輯:剛纔看到你的答案中的編譯行。你可以使用下面的代碼:

gcc example1.c slre.c -o test.cgi -L. -lconfig 

但是,這會每次都(重新)編譯SLRE。爲了節省一些編譯時間,你應該使用Adrian的答案中的行來緩存已編譯的SLRE。

+0

我有兩個文件在正確的位置,所以它應該工作時,包含頭文件,對不對? – kaljak 2013-04-20 09:47:50

+0

你必須告訴編譯器同時使用c文件(你的和** slre.c **)。對於海灣合作委員會,你可以像阿德里安所說的那樣去做。作爲替代方法,只需列出/添加** slre.c **即可添加自己的c文件。 – Mario 2013-04-20 09:57:01