gpt4 book ai didi

c - 使用 tidy 库时出现 "undefined reference"错误,尤其是 "tidy.h"

转载 作者:太空宇宙 更新时间:2023-11-04 02:29:51 34 4
gpt4 key购买 nike

我目前正在使用一个脚本,该脚本使用 tidy library 验证无效的 XML 文件或字符串。

测试其运行的示例代码:

#include <tidy.h>
#include <tidybuffio.h>
#include <stdio.h>
#include <errno.h>

int main(int argc, char **argv )
{
const char* input = "&lt;title&gt;Foo&lt;/title&gt;&lt;p&gt;Foo!";
TidyBuffer output = {0};
TidyBuffer errbuf = {0};
int rc = -1;
Bool ok;

TidyDoc tdoc = tidyCreate(); // Initialize "document"
printf( "Tidying:\t%s\n", input );

ok = tidyOptSetBool( tdoc, TidyXhtmlOut, yes ); // Convert to XHTML
if ( ok )
rc = tidySetErrorBuffer( tdoc, &errbuf ); // Capture diagnostics
if ( rc >= 0 )
rc = tidyParseString( tdoc, input ); // Parse the input
if ( rc >= 0 )
rc = tidyCleanAndRepair( tdoc ); // Tidy it up!
if ( rc >= 0 )
rc = tidyRunDiagnostics( tdoc ); // Kvetch
if ( rc > 1 ) // If error, force output.
rc = ( tidyOptSetBool(tdoc, TidyForceOutput, yes) ? rc : -1 );
if ( rc >= 0 )
rc = tidySaveBuffer( tdoc, &output ); // Pretty Print

if ( rc >= 0 )
{
if ( rc > 0 )
printf( "\nDiagnostics:\n\n%s", errbuf.bp );
printf( "\nAnd here is the result:\n\n%s", output.bp );
}
else
printf( "A severe error (%d) occurred.\n", rc );

tidyBufFree( &output );
tidyBufFree( &errbuf );
tidyRelease( tdoc );
return rc;
}

正在运行

gcc -I/usr/include/tidy tidy_example.c

我在我的终端上得到这个输出:

/tmp/cclFfP4I.o: In function main':
tidy_exa.c:(.text+0x6e): undefined reference to
tidyCreate' tidy_exa.c:(.text+0x9e): undefined reference to tidyOptSetBool'
tidy_exa.c:(.text+0xba): undefined reference to
tidySetErrorBuffer' tidy_exa.c:(.text+0xd6): undefined reference to tidyParseString'
tidy_exa.c:(.text+0xeb): undefined reference to
tidyCleanAndRepair' tidy_exa.c:(.text+0x100): undefined reference to tidyRunDiagnostics'
tidy_exa.c:(.text+0x11f): undefined reference to
tidyOptSetBool' tidy_exa.c:(.text+0x149): undefined reference to tidySaveBuffer'
tidy_exa.c:(.text+0x1a6): undefined reference to
tidyBufFree' tidy_exa.c:(.text+0x1b2): undefined reference to tidyBufFree'
tidy_exa.c:(.text+0x1be): undefined reference to
tidyRelease' collect2: error: ld returned 1 exit status

关于如何解决这个问题的任何想法,或者任何其他库在 c/c++ 中对文件或字符串(无效的 XML)做同样的事情。

也欢迎任何建议。

最佳答案

您忘记使用 -l 选项链接库。

例如

gcc -I/usr/include/tidy -ltidy tidy_example.c -o example

如果您还需要为库指定一个特定的文件夹,您必须添加 -L 选项,例如

gcc -I/usr/include/tidy -L/usr/local/lib/tidy -ltidy tidy_example.c -o example

关于c - 使用 tidy 库时出现 "undefined reference"错误,尤其是 "tidy.h",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44902138/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com