Russian Qt Forum

Qt => Общие вопросы => Тема начата: sergek от Сентябрь 16, 2014, 18:12



Название: InterLockedCompareExchange@12 и .NET Framework
Отправлено: sergek от Сентябрь 16, 2014, 18:12
Коллеги,
два вопроса по установке приложений.

Почему Qt 5.3.1 open source содержит libstdc++-6.dll от 07.03.2014, программа установленная с этой версией дает ошибку "Точка входа в процедуру InterLockedCompareExchange@12 не найдена в библиотеке DLL libstdc++-6.dll"? А в предыдущих версиях libstdc++-6.dll имеет дату 17.04.2013 и с ней программа работает.

И еще один вопрос - опытным путем определил, что для работы моей программы, собранной с Qt 5.3.1 требуется в WinXP SP2 .NET Framework 3.5. Та же самая программа, собранная в 5.1 работает без проблем с .NET 3.0.
Я не встречал такого требования в документации. Неужели что-нибудь пропустил?


Название: Re: InterLockedCompareExchange@12 и .NET Framework
Отправлено: Alex Custov от Сентябрь 16, 2014, 18:33
NET framework ни при чём, скорее всего нужен MSVC redistributable. "Точка входа в процедуру InterLockedCompareExchange@12 не найдена в библиотеке DLL libstdc++-6.dll" - это известный баг MinGW, лечится только подсовыванием правильной DLL, где этот символ есть, либо перекомпиляцией.


Название: Re: InterLockedCompareExchange@12 и .NET Framework
Отправлено: sergek от Сентябрь 16, 2014, 19:43
NET framework ни при чём, скорее всего нужен MSVC redistributable.
Попробовал с MVC 2012 Redistributable Package, не работает.

...это известный баг MinGW, лечится только подсовыванием правильной DLL, где этот символ есть, либо перекомпиляцией.
Перекомпиляцией Qt?


Название: Re: InterLockedCompareExchange@12 и .NET Framework
Отправлено: Alex Custov от Сентябрь 16, 2014, 19:50
Перекомпиляцией Qt?

Перекомпиляцией проекта. Под ту версию Qt/MinGW которая установлена на целевой машине. Либо таскать все DLL с собой, и именно те DLL, напротив которых была компиляция.


Название: Re: InterLockedCompareExchange@12 и .NET Framework
Отправлено: sergek от Сентябрь 17, 2014, 14:49
Либо таскать все DLL с собой, и именно те DLL, напротив которых была компиляция.
Я так и делаю.
Весь фокус в том, что программа не хочет работать с библиотеками, с которыми она компилировалась, и, сделанная в версии 5.3.1, прекрасно работает с библиотеками предыдущей версии, 5.1.


Название: Re: InterLockedCompareExchange@12 и .NET Framework
Отправлено: Alex Custov от Сентябрь 17, 2014, 15:11
Я так и делаю.
Весь фокус в том, что программа не хочет работать с библиотеками, с которыми она компилировалась, и, сделанная в версии 5.3.1, прекрасно работает с библиотеками предыдущей версии, 5.1.

Приложи сюда пример со всеми DLL как ты копируешь на другой компьютер, в программе достаточно одного main() безо всякой логики.


Название: Re: InterLockedCompareExchange@12 и .NET Framework
Отправлено: Bepec от Сентябрь 17, 2014, 15:14
А у меня такое чуйство что у тебя стоит две версии Qt. Просто пути прописаны к первой, с ней и компилируется. А длл ты поток копируешь из второй :)


Название: Re: InterLockedCompareExchange@12 и .NET Framework
Отправлено: sergek от Сентябрь 19, 2014, 17:53
Приложи сюда пример со всеми DLL как ты копируешь на другой компьютер, в программе достаточно одного main() безо всякой логики.
Пожалуйста: https://www.dropbox.com/s/b6pbtftrrd39cwk/UfebsGen-exe_133.rar?dl=0 (https://www.dropbox.com/s/b6pbtftrrd39cwk/UfebsGen-exe_133.rar?dl=0)
Здесь либы от 5.3.1, а libstdc++-6.dll от 5.2 (17.04.2013). Положите вместо нее библиотеку от 5.3.1 (07.03.2013), и, может быть, увидите. Только .net должен быть не выше 3.0.
Если будете экспериментировать с установкой/удалением .net, не забудьте перезагружаться ;) И свой каталог Qt переименуйте.

А у меня такое чуйство что у тебя стоит две версии Qt. Просто пути прописаны к первой, с ней и компилируется. А длл ты поток копируешь из второй :)
Нет. Всегда использую только одну версию.


Название: Re: InterLockedCompareExchange@12 и .NET Framework
Отправлено: Alex Custov от Сентябрь 19, 2014, 18:07
Пожалуйста: https://www.dropbox.com/s/b6pbtftrrd39cwk/UfebsGen-exe_133.rar?dl=0 (https://www.dropbox.com/s/b6pbtftrrd39cwk/UfebsGen-exe_133.rar?dl=0)
Здесь либы от 5.3.1, а libstdc++-6.dll от 5.2 (17.04.2013). Положите вместо нее библиотеку от 5.3.1 (07.03.2013), и, может быть, увидите.

Ссылка на этот символ присутствует в python27.dll и PythonQt.dll, что говорит о том, что они собраны более старой версией MinGW (а конкретно 4.8.0). Решением, как я и говорил, будет пересборка всего одной версией MinGW.


Название: Re: InterLockedCompareExchange@12 и .NET Framework
Отправлено: sergek от Сентябрь 19, 2014, 19:40
Ссылка на этот символ присутствует в python27.dll и PythonQt.dll, что говорит о том, что они собраны более старой версией MinGW (а конкретно 4.8.0). Решением, как я и говорил, будет пересборка всего одной версией MinGW.
Мдаа. Ведь пересобирал, а положить забыл. Спасибо!