|
0 / 0 / 1
Регистрация: 12.08.2013
Сообщений: 23
|
||||||||||||||||||||||||||
Не работает Synchronize() в DLL при сборке без рантайм библиотек31.08.2017, 13:41. Показов 1666. Ответов 11
Метки нет (Все метки)
Добрый день. Есть библиотека, в ней есть поток TThread. Библиотека должна использоваться на компьютере без IDE. Когда библиотека собирается с выставленными галочками Link with runtime packages и Link with dynamic RTL, всё работает хорошо. Убираю галочки - программа виснет на методе Synchronize, не вызывая полученную функцию. Код:
NetThread.h Кликните здесь для просмотра всего текста
Network.cpp Кликните здесь для просмотра всего текста
Создание потока:
0
|
||||||||||||||||||||||||||
| 31.08.2017, 13:41 | |
|
Ответы с готовыми решениями:
11
включение библиотек при сборке
Возникают ошибки при сборке dll qwt |
|
|
||
| 31.08.2017, 13:51 | ||
|
Сам идея дохлая. Начиная с использование экспорта классов из DLL. И заканчивая Synchronize в dll в котором нет основного потока gui с которым нужно синхронизироваться. Я уже не говорю - нафига оно вообще сдалось пихать в dll
0
|
||
|
0 / 0 / 1
Регистрация: 12.08.2013
Сообщений: 23
|
|
| 31.08.2017, 14:03 [ТС] | |
|
Класс не экспортируется из DLL. Экспортируются OMSConnect и StartFlow. Коннект возвращает хэндл на поток, СтартФлоу принимает хэндл и запускает по этому адресу поток. Может это неправильно...
GUI есть, оно вызывает экспортные функции, и передает в DLL коллбэки на свои функции. Получается, GUI и DLL работают в одном потоке, но в DLL есть второй поток, который и должен синхронизоваться с потоком GUI. Как лучше сделать?
0
|
|
|
0 / 0 / 1
Регистрация: 12.08.2013
Сообщений: 23
|
||||||
| 31.08.2017, 14:10 [ТС] | ||||||
|
Код GUI:
Кликните здесь для просмотра всего текста
0
|
||||||
|
|
|||
| 31.08.2017, 14:20 | |||
Сообщение было отмечено romasv как решение
Решение2. Не использовать Synchronize. 3. Не использовать стат линковку. итд... Если приложения - читайте что я написал выше, поток в dll ничего не знает о вашем приложении. В динамике оно работает лишь по тому что грузятся одни и те же библиотеки и используются совместно (глобальные объекты, менеджер памяти идр вещи скрытые от глаз.) Добавлено через 6 минут В обще это мутная тема где все не очевидно и непонятно. Можете почитать: Создать DLL, которая создаст кнопку на форме
1
|
|||
|
0 / 0 / 1
Регистрация: 12.08.2013
Сообщений: 23
|
||
| 31.08.2017, 15:42 [ТС] | ||
|
Хм, довольно интересно всё расписали, спасибо!
В DLL заказчик просил запихать... Dll должна принимать запросы с gui-программки, и принимать udp-поток данных. То, что она приняла, она должна пихнуть обратно в gui. Заказчику видимо лень писать свой поток. Добавлено через 1 час 0 минут И спасибо за советы! В общем, убрал Synchronize, теперь вызываю метод напрямую. Всё работает, и никак не глючит... Не понимаю, почему, ведь какой-то совершенно левый поток что-то меняет в другой программе, да ещё и на форме, и ему это прекрасно удается! Магия...
0
|
||
|
0 / 0 / 1
Регистрация: 12.08.2013
Сообщений: 23
|
||||||
| 31.08.2017, 16:08 [ТС] | ||||||
|
Да, без синхронизации...
0
|
||||||
|
0 / 0 / 1
Регистрация: 12.08.2013
Сообщений: 23
|
|
| 01.09.2017, 08:30 [ТС] | |
|
Тогда какой выход? Использовать WINAPI-поток? Насколько безопасно будет в нем использовать TIdUDPClient? И как быть с синхронизацией?
0
|
|
|
|
||
| 01.09.2017, 10:15 | ||
|
Но как я сказал лучше отказаться от такой затеи вовсе или же ликоваться динамически.
0
|
||
| 01.09.2017, 10:15 | |
|
Помогаю со студенческими работами здесь
12
Почему при сборке Releas'а прога без VC++ не идёт? Не работает Synchronize в TThread
При сборке работает только полпроекта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|