![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Mechatronic |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2010 Репутация: нет Всего: нет |
Здравствуйте.
Существует следующая проблема: портирование старого софта, осуществляющего визуализацию вычислений через консоль, на GUI Qt и развитие функционала. Старый софт выполнен на языке С. Хотелось бы запустить его Main Loop в отдельном потоке и асинхронно передавать необходимые данные в новые модули на С++. Я так понимаю, передать указатель на функцию С++ в функцию С нельзя из-за отсутствия стандартного ABI у С++. Как лучше поступить? Реализовывать на С++ отдельный поток для считывания очереди из модуля С не хочется. Второй вариант - разложить С-шный софт на более простые функции и крутить поток сразу в С++. Но, честно говоря, не хочется копаться - код очень запутан и не модульный. К тому же, хочется прояснить для себя вопрос. Спасибо. Это сообщение отредактировал(а) Mechatronic - 28.2.2014, 12:05 |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
||||
|
||||
| Mechatronic |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2010 Репутация: нет Всего: нет |
xvr, спасибо за совет!
Но extern "C" же означает, что функция лежит в бинарнике С, чтобы знать, как с ней связываться. В обратную сторону не должно работать, как я думал. Да и extern по месту определения функции выглядит странно. Но попробую. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Mechatronic, extern "C" означает, что функция имеет то имя, которое ей присвоил программист. Просто в С++ имена несколько искажаются (mangling) - в них прописываются типы параметров (нужно для перегрузки функций).
|
|||
|
||||
| Mechatronic |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2010 Репутация: нет Всего: нет |
bsa, спасибо.
Я думал, что extern "C" влияет на то, в каком порядке передаются аргументы, и в таком роде. Теперь ясно. |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |