Разрешить моей библиотеке C ++ работать с C (сокращенные наборы функций)

Я хотел создать разделяемую библиотеку, в которой будут использоваться классы, чтобы поддерживать ее функционирование в чистоте (может потребоваться много входных данных или обработки), хотя я все еще желаю ориентироваться на платформы C.

Если я применяю extern «C» {} ко всем своим прототипам и предоставляю в качестве примера набор открытых функций, которые имитируют функции класса, так что объекты не «требуются» для использования моей библиотеки, У меня есть программное обеспечение, написанное на C ++, и оно связано с библиотекой на C. Я включаю классы заголовков, используя обычный extern "C" {...

У меня сейчас есть проблема, которая меня довольно сбивает с толку: У меня есть программное обеспечение, написанное на C ++, и оно связано с библиотекой на C. Я включаю классы заголовков, используя обычный

extern "C" {
    #include <libheader.h>
}

. Все работает нормально, пока я не использую оптимизацию gcc. Как только я включаю четный -O1, то есть первый уровень оптимизации, во время выполнения я получаю ошибку «неопределенный символ» для символа из этой библиотеки. Однако имя подверглось изменению имени, которое должно быть отключено из-за extern «C» .

Функция, которая вызывает рассматриваемый символ, является встроенной, на случай, если это имеет значение. Используемый компилятор - gcc 4.4.3.

Я, честно говоря, даже не знаю, что искать, поэтому был бы очень признателен, если бы один из вас мог объяснить мне причину такого поведения.

Спасибо за вашу поддержку.

6
задан BЈовић 30 March 2011 в 12:38
поделиться