2012-02-28 28 views
0

我尝试使用htmlcxx解析网页。问题是,该示例不可编译。htmlcxx0.84编译错误

我得到这个当我运行g++ webscrsp.cpp

 
/tmp/ccHiUM6o.o: In function `main': 
webscrsp.cpp:(.text+0x86): undefined reference to `htmlcxx::HTML::ParserSax::parse(std::basic_string, std::allocator > const&)' 
webscrsp.cpp:(.text+0xb8): undefined reference to `htmlcxx::HTML::operator >&, tree > > const&)' 
/tmp/ccHiUM6o.o: In function `htmlcxx::HTML::ParserDom::ParserDom()': 
webscrsp.cpp:(.text._ZN7htmlcxx4HTML9ParserDomC1Ev[htmlcxx::HTML::ParserDom::ParserDom()]+0x22): undefined reference to `vtable for htmlcxx::HTML::ParserDom' 
/tmp/ccHiUM6o.o: In function `htmlcxx::HTML::ParserDom::~ParserDom()': 
webscrsp.cpp:(.text._ZN7htmlcxx4HTML9ParserDomD1Ev[htmlcxx::HTML::ParserDom::~ParserDom()]+0x16): undefined reference to `vtable for htmlcxx::HTML::ParserDom' 
collect2: ld returned 1 exit status 

我的代码是

#include <string> 
    #include <iostream> 
    #include <sstream> 
    #include </home/lubhavan/htmlcxx-0.84/html/ParserDom.h> 
    using namespace std; 
    using namespace htmlcxx; 

    int main() 
    { 
     string html ="<html > <head> <title > hi iam titile </title> </head> <body> <p>    what can i do </p> </body> </html>"; 
    HTML::ParserDom parser; 
    tree<HTML::Node> dom = parser.parseTree(html) ; 
    cout << dom <<endl; 

    cout << endl; 
    return 0; 
    } 

请帮助我,因为我有很快做到这一点。我无法获得故障...提前

谢谢..

+0

可能的重复[链接错误,而使用htmlcxx与dev-cpp](http://stackoverflow.com/questions/7300828/linking-error-while-using-htmlcxx-with-dev-cpp) – 2012-02-28 05:01:32

回答

1

如果你的整个命令行是

g++ webscrsp.cpp 

那么你会得到链接错误,因为你不与链接包含实际代码的库。

你必须做这样的事情:

g++ webscrsp.cpp -L/path/to/library -Wl,-rpath=/path/to/library -lname_of_library 

在上面的命令行例子,/path/to/library是通向一个名为libXXX.a文件,其中XXXname_of_library

对你而言,你应该看看/home/lubhavan/htmlcxx-0.84/的文件,从lib开始到.a结尾。 /path/to/library是该文件所在的路径。 name_of_library是没有前导lib和尾随.a的文件的名称。

+0

有没有扩展名为.a的文件,但有一些文件以lib开头,扩展名为.la或.so – puneet 2012-02-28 13:00:57

+0

@puneet'.so'文件也是一个库,但是它是动态链接到你的应用程序的。它的工作原理是一样的,使用'-L'来设置库的路径,'-l'(小写L)命名你想链接的库(没有'lib'和'.so'。)。 – 2012-02-28 13:04:34

+0

@ Joahhim Pileborg谢谢sooooo它的工作:) 但我还有1个问题,我必须添加此库路径n libname每次我必须运行该程序 – puneet 2012-02-28 13:22:53