2011-02-13 3 views
2

Я установил tidy-dev из репозитория ubuntu, проверил путь установки - это нормально (/ usr/include/tidy).Как скомпилировать программу на C++ с использованием html tidy C++

Но я не могу найти истинные флаги для компиляции моего C++ скрипт с включают в кругленькую C++ обертка tidyx.h от http://users.rcn.com/creitzel/tidy/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’ 
+0

Что такое сообщение об ошибке? Кадр в темноте был бы тем, что вы забыли связать с аккуратной библиотекой (вы включаете только ее заголовки)? –

ответ

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

На данный момент заголовок будет найден. Если вы получите другие ошибки, связанные с аккуратными (например: некоторые опрятные функции не определены), вам нужно связать свой двоичный файл с какой-либо библиотекой, используя параметр GCC -l.


EDIT после массированного редактирования параметров порядка.

Ваша проблема в том, что tidyx.h содержит код на C++, а также ваш исходный файл, глядя на его расширения, кажется, является исходным файлом на C++. Для его компиляции вам понадобится компилятор C++. Используйте g++ вместо gcc:

g++ script.cpp 
+0

Спасибо, я это знал. Я переписал вопрос. – Arturgspb

+0

@ user614999: обновил мой ответ – peoro

+0

Вы имеете в виду «g ++ -I/usr/include/tidy 1.cpp»? – Arturgspb

Смежные вопросы