Всем добрый день. Есть некий код написанный на Си. Код фактически представляет из себя набор функций. Встала задача написать прогу расширяющую функционал данного кода, а кроме того создание графического интерфейса. Решил сделать на Qt, но встал вопрос: как использовать сишный код в плюсах. Вариант в лоб, это обернуть сишный код в классы(точнее даже создать фабрики ибо все функции спокойно могут быть статическими) и использовать их дальше как обычные плюсовые. Но это долго и не сильно красиво в плане того что приходиться делать лишнюю работу. Есть ли способ использовать эти функции статически при этом чтобы они не принадлежали ни одному классу? В С++ вроде бы была такая возможность надо было просто добавить какую(ие)-то #pragma. Но какие сейчас не помню может кто подскажет? И еще как это все состыкуется с Qt? Вроде не должно быть особых проблем, но мало ли?
В общем кто может что по этому поводу подсказать?Заранее спасибо!
Использование С кода в С++/Qt программе
Модератор: Модераторы разделов
Re: Использование С кода в С++/Qt программе
Я обычно в подобных ситуация код, написанный на C, оформляю в виде стат. или разделяемой библиотеки и линкую ее туда куда нужно.
С QT все стыкуются замечательно (проверено), главное случайно не использовать имена функций такие же как в QT.
С QT все стыкуются замечательно (проверено), главное случайно не использовать имена функций такие же как в QT.
Разработка программ для *nix
Re: Использование С кода в С++/Qt программе
С глобальными функциями в C++ проблем нет. А если будут проблемы в самом коде - оберните в extern "C" { /* здесь Ваши функции */ }
UPD если, как сказал sim1 будут пересечния с именами методов Qt - оберните все это еще в namespace.
UPD если, как сказал sim1 будут пересечния с именами методов Qt - оберните все это еще в namespace.
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Использование С кода в С++/Qt программе
всё прекрасно вставляется и так...
ага.
но проблем быть не должно, если С код достаточно "правильный". (использование глобальных переменных с именами a,b,c не приветствуется..)