Я хотел создать разделяемую библиотеку, в которой будут использоваться классы, чтобы поддерживать ее функционирование в чистоте (может потребоваться много входных данных или обработки), хотя я все еще желаю ориентироваться на платформы C.
Если я применяю extern «C» {} ко всем своим прототипам и предоставляю в качестве примера набор открытых функций, которые имитируют функции класса, так что объекты не «требуются» для использования моей библиотеки, У меня есть программное обеспечение, написанное на C ++, и оно связано с библиотекой на C. Я включаю классы заголовков, используя обычный extern "C" {...
У меня сейчас есть проблема, которая меня довольно сбивает с толку: У меня есть программное обеспечение, написанное на C ++, и оно связано с библиотекой на C. Я включаю классы заголовков, используя обычный
extern "C" {
#include <libheader.h>
}
. Все работает нормально, пока я не использую оптимизацию gcc. Как только я включаю четный -O1, то есть первый уровень оптимизации, во время выполнения я получаю ошибку «неопределенный символ» для символа из этой библиотеки. Однако имя подверглось изменению имени, которое должно быть отключено из-за extern «C»
.
Функция, которая вызывает рассматриваемый символ, является встроенной, на случай, если это имеет значение. Используемый компилятор - gcc 4.4.3.
Я, честно говоря, даже не знаю, что искать, поэтому был бы очень признателен, если бы один из вас мог объяснить мне причину такого поведения.
Спасибо за вашу поддержку.