2013-04-20 37 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