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

我在运行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

my code is

    #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;
     }

请帮助我,因为我必须尽快做。我无法理解...

提前致谢 ..

最佳答案

如果您的整个命令行是

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

10-05 23:49