LINUX.ORG.RU

как включать C++ заголовки в C код?


0

0

когда нужно обращаться к c++ библиотекам из си-кода, как это делается?

пытаюсь собрать fst с vst-sdk версии 2.4, gcc ругается
./vst/aeffect.h:112: error: syntax error before ‘*’ token

что неудивительно, потому что в строке 112 ссылка на структуру AEffect
без слова struct:
struct AEffect;
/// @cond ignore
typedef VstIntPtr (VSTCALLBACK *audioMasterCallback) (AEffect* effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt);

как объяснить gcc где си а где плюсы?

anonymous

Это, вообще говоря, невозможно.

Надо для ЦеПП вызовов написать враппер (на ЦеПП) в обкладках extern "C"

А main компилить g++.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

но ведь как-то они (разработчики fst) это делают
почему решили писать хост для VST на Си вместо плюсов, это вопрос
наверное были причины

но пока я тупо заменил в нескольких местах в заголовках
объявления структур вроде
struct VstEvents { ... };
на конструкцию
struct __VstEvents { ... };
typedef struct __VstEvents VstEvents;
и что интересно, всё собралось и заработало!
ручки крутятся, звук идёт.

anonymous
()
Ответ на: комментарий от anonymous

Видимо, я не понял вопроса...

_нельзя_ из ЦеШного кода вот так взять и вызвать ЦеППшный, если не предпринимать специальных мер. Можно, конечно, хакнуть это дело, приспособив вызовы к конкретной версии конкретного компилятора...

(C fst и VST я не знаком, и разбираться времени нет).

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Можно, конечно, хакнуть это дело,
именно

VST -- это API (с++) для аудио-плагинов (win32 и мак)
fst -- приблуда которая их загружает в линуксе через wine, что само по себе уже хак

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.