вызов функций C / C ++ библиотеки, скомпилированной с помощью g ++, с помощью программы, скомпилированной с помощью gcc - PullRequest
2 голосов
/ 22 октября 2010

У меня есть набор программных модулей библиотеки, которые разработаны на c ++.Итак, я использую g ++ для компиляции своего программного обеспечения.

Это должно использоваться различными существующими приложениями, написанными на C и скомпилированными с помощью gcc.

Когда другие команды использовали g ++ для компиляции своихкод, они начали получать много ошибок компилятора из-за строгих правил проверки типов в c ++.Это сломало их приложения.Хуже того, они используют какой-то сторонний библиотечный код, который нельзя скомпилировать с помощью g ++.

, если они используют gcc, то возникают ошибки компоновщика (неразрешенные символы).

, так что мой вопросэто ... "Есть ли способ, чтобы мой библиотечный код был связан с их приложениями, не меняя соответствующие компиляторы? То есть я все еще должен использовать g ++, так как я интенсивно использую классы / объекты в своем коде, и они имеютнет выбора использования g ++, что сломает их приложение? ".

Спасибо за любезную помощь.

С уважением, Равиндра

1 Ответ

0 голосов
/ 22 октября 2010

Одной из проблем, с которой вы можете столкнуться, может быть то, что разные версии g ++ имеют разные форматы ABI.по крайней мере, не ожидайте, что версии G ++ до 4.1 будут работать с кодом, скомпилированным с 4.1 или позже.

Смешивание C и C ++ требует, чтобы весь код C ++ экспортировал C-совместимый интерфейс.Это делается путем объявления свободных функций (нельзя использовать в классах) со спецификатором extern "C". (некоторые заметки о c ++ faq lite_

extern "C" {
  #include "c_language_headers.h"

  int c_accessible_function(int);

  struct c_accessible_datatype { };
}
...