2011-12-14 3 views
2

У меня есть проблема с написанием функций postgres в C++, следуя инструкциям для C: C-Language Functions. Я обнаружил, что большинство функций postgres написаны на C вместо C++, но я должен использовать lib, написанный на C++, поэтому я выбрал C++. Мой вопрос: есть ли что-нибудь, что можно заметить при написании на C++? Обычно писать make-файлы с помощью pgxs, так как я должен писать make-файл, чтобы заставить его работать? Благодарю.Написание функций PostgreSQL в C++

+1

О чем нужно подумать, так это то, что вам, возможно, стоит пометить вашу C++-функцию как «extern» C ". –

+1

@JoachimPileborg Увы, это не так просто. palloc() усложняет ситуацию, обработка исключений C++ не очень хорошо работает с C без очень защитного кодирования на всех точках интерфейса C/C++, а обработка ошибок на основе longjmp Pg бросает основной ключ в работу. –

+0

Чтобы перефразировать Linus: C++ был создан только для привлечения идиотов. – wildplasser

ответ

5

Если вы можете избежать этого, сделайте это. PostgreSQL не очень хорошо сочетается с C++. Возможно, , как показано PostGIS , но это не слишком весело.

Если вы можете, напишите или сгенерируйте чистую C-оболочку в свою C++-библиотеку и используйте эту оболочку для взаимодействия с библиотекой. Это будет непрактично, если он сильно основан на шаблонах (например, boost) или использует другие более сложные функции C++, но работает хорошо, если это всего лишь код стиля C-с-объектами. SWIG может помочь создать обертку для вас.

Если вы предпочитаете избегать подхода к обертке или если ваша библиотека слишком сложна, слишком зависима от исключения и т. Д., То вы должны read this PostgreSQL manual entry.

Искать список рассылки PostgreSQL для более подробной информации по этой теме.

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