2

我从 ubuntu 存储库安装了 tidy-dev,检查了安装路径 - 没关系(/usr/include/tidy)。

但是我找不到一个真正的标志来编译我的 c++ 脚本,其中包括来自http://users.rcn.com/creitzel/tidy/tidyx.h的整洁的 c++ 包装器 tidyx.h

你能帮助我吗?

我的测试脚本文件名为 1.cpp,tidyx.h 我放在附近。1.cpp内容:

#include "tidyx.h"

int main()
{
}

我试了一下,但不好:

$ gcc -I/usr/include/tidy 1.cpp -ltidy

In file included from 1.cpp:1:
tidyx.h: In constructor ‘Tidy::Source::Source()’:
tidyx.h:83: error: invalid conversion from ‘int (*)(ulong)’ to ‘int (*)(void*)’
tidyx.h:84: error: invalid conversion from ‘void (*)(ulong, byte)’ to ‘void (*)(void*, byte)’
tidyx.h:85: error: invalid conversion from ‘Bool (*)(ulong)’ to ‘Bool (*)(void*)’
tidyx.h:86: error: invalid conversion from ‘ulong’ to ‘void*’
tidyx.h: In constructor ‘Tidy::Sink::Sink()’:
tidyx.h:123: error: invalid conversion from ‘void (*)(ulong, byte)’ to ‘void (*)(void*, byte)’
tidyx.h:124: error: invalid conversion from ‘ulong’ to ‘void*’
tidyx.h: In member function ‘void Tidy::Buffer::Attach(void*, uint)’:
tidyx.h:165: error: invalid conversion from ‘void*’ to ‘byte*’
tidyx.h:165: error:   initializing argument 2 of ‘void tidyBufAttach(TidyBuffer*, byte*, uint)’
tidyx.h: In member function ‘int Tidy::Document::Create()’:
tidyx.h:496: error: invalid conversion from ‘ulong’ to ‘void*’
tidyx.h:496: error:   initializing argument 2 of ‘void tidySetAppData(const _TidyDoc*, void*)’
tidyx.h: In member function ‘void Tidy::Document::SetAppData(ulong)’:
tidyx.h:511: error: invalid conversion from ‘ulong’ to ‘void*’
tidyx.h:511: error:   initializing argument 2 of ‘void tidySetAppData(const _TidyDoc*, void*)’
tidyx.h: In member function ‘ulong Tidy::Document::GetAppData()’:
tidyx.h:512: error: invalid conversion from ‘void*’ to ‘ulong’
4

1 回答 1

1

要包含头文件,您需要使用#include预处理器指令。它将在编译器包含路径中查找头文件。

如果tidyx.h/usr/include/tidy你可以把你的源文件:

#include <tidy/tidyx.h>

然后只用 编译gcc script.cpp,因为/usr/include很可能是编译器的默认包含路径。

否则,您也可以放入源文件:

#include <tidyx.h>

然后告诉 GCC 查看/usr/include/tidygcc -I/usr/include/tidy script.cpp

此时将找到标题。如果您遇到与 tidy 相关的其他错误(例如:未定义一些 tidy 函数),您需要使用 GCC-l选项将二进制文件链接到某个库。


在 OP 的大量编辑之后进行编辑

你的问题是它tidyx.h包含 C++ 代码,而且你的源文件,寻找它的扩展名,似乎是一个 C++ 源文件。你需要一个 C++ 编译器来编译它。使用g++代替gcc

g++ script.cpp
于 2011-02-13T11:57:10.060 回答