проблема с переносом библиотеки extern «C» в пространство имен

Я использую библиотеку C (libgretl) из C ++, и некоторые ее функции конфликтуют с моим кодом, поэтому я хотел обернуть ее в пространство имен, например:

namespace libgretl {
extern "C" {
    #include <gretl/libgretl.h>
}}

Однако это не компилируется, я получаю «неопределенные» ошибки из файлов gcc (при использовании mingw32 с gcc 4.5.2 в Windows). Первые ошибки происходят из следующего блока кода файла c ++ / cstddef:

_GLIBCXX_BEGIN_NAMESPACE(std)
  using ::ptrdiff_t;
  using ::size_t;
_GLIBCXX_END_NAMESPACE

, где макросы расширяются соответственно до пространства имен std { и } . После этого появляются другие ошибки.

Отсутствие директивы extern «C» не помогает. Использование анонимного пространства имен уменьшает количество ошибок, но оно все равно не компилируется.

Поэтому у меня вопрос, есть ли способ включить такую ​​библиотеку C и разместить ее функции в пространстве имен без изменения gcc или исходные файлы библиотеки?

Спасибо.

Михал

8
задан Michal Kaut 25 August 2011 в 09:34
поделиться