2

ubuntu リポジトリから tidy-dev をインストールし、インストール パスを確認しました。問題ありません (/usr/include/tidy)。

しかし、 http ://users.rcn.com/creitzel/tidy/tidyx.h から tidy c++ ラッパー tidyx.h をインクルードして C++ スクリプトをコンパイルするための真のフラグが見つかりません。

手伝って頂けますか?

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/tidy:gcc -I/usr/include/tidy script.cpp

この時点で、ヘッダーが見つかります。tidy に関連する他のエラー (例: 一部の tidy 関数が定義されていない) が発生する場合は、GCC-lオプションを使用してバイナリをライブラリにリンクする必要があります。


OPの大規模な編集後に編集します

ここでの問題は、tidyx.hC++ コードが含まれていることです。また、拡張子を見ると、ソース ファイルは C++ ソース ファイルのようです。コンパイルするには C++ コンパイラが必要です。g++の代わりに使用gcc:

g++ script.cpp
于 2011-02-13T11:57:10.060 に答える