Название: Проблема с длл-ками Отправлено: ecspertiza от Декабрь 04, 2009, 10:24 Суть такова, есть тестовый пример на Qt который просто вызывает из длл-ки функцию, есть две абсолютно одинаковые длл-ки, но одна скомпилина с помошью MinGW вторая Microsoft компилятором который идет вместе с VC++. Обе скомпилины под Windows7
Проблема вот в чем, если я вызываю функции из этих длл-ок под Windows 7 никаких проблем не возникает, но если я вызываю их под Windows XP ,то та длл-ка которая собрана микросовтовским компилятором с треском вылетает, а вторая работает вполне отлично, в чем могут быть грабли? Название: Re: Проблема с длл-ками Отправлено: crackedmind от Декабрь 04, 2009, 10:29 Суть такова, что не понятно, каким образом ты линкуешь dll. Толи динамически, толи статически. Это раз. А два, если все таки динамически, то гляди на ошибки...
Название: Re: Проблема с длл-ками Отправлено: ecspertiza от Декабрь 04, 2009, 10:35 Длл-ки динамические, а из ошибок даже не знаю куда глянуть, просто вылетает стандартная тема микрософта, с отправлением отчета, единственное что я могу от туда понять так это то что имя модуля с ошибкой это имя софтины которая вызывает ф-ции из длл-ок.
Название: Re: Проблема с длл-ками Отправлено: niXman от Декабрь 04, 2009, 10:47 Что говорит GetLastError() ?
Название: Re: Проблема с длл-ками Отправлено: crackedmind от Декабрь 04, 2009, 10:56 Дык, надо нормальную проверку на ошибки написать. Плюс воспользоватся отладчиком =)
Название: Re: Проблема с длл-ками Отправлено: Zmeishe от Декабрь 04, 2009, 10:59 Если эта XP на другой машине, т.е. не там где сборка проводилать то
По всей видимости VC++ вшил туда зависимости от FrameWork и прочего барахла. Поставь на эту XP вот такую штуку C++ 2005 Redistributable Package (x86) или аналогичную, соответствующую твоему VC++ мне тут на форуме давали ссылку для скачивания. Поиском воспользуйся. Название: Re: Проблема с длл-ками Отправлено: ecspertiza от Декабрь 04, 2009, 11:04 ф-цию из длл я вызываю так
Код: typedef char* (*RetStr)(char*); код длл-ки микрософтовской Код: extern "C" __declspec(dllexport) char* RetStr(char* str) видимо он даже неможет найти точку входа в эту длл-ку ??? Название: Re: Проблема с длл-ками Отправлено: niXman от Декабрь 04, 2009, 11:06 А retStr случаем не NULL ?
Название: Re: Проблема с длл-ками Отправлено: niXman от Декабрь 04, 2009, 11:08 Кстати так делать нельзя!
Код Нет гарантии, что new вернет обнуленную память. Название: Re: Проблема с длл-ками Отправлено: ecspertiza от Декабрь 04, 2009, 11:30 Кстати так делать нельзя! Код Нет гарантии, что new вернет обнуленную память. а как лучше? грамотный совет никогда не повредит=) Zmeishe, был прав не хватало зависимостей, от VC. Тогда еше вопрос можно ли как то скомпилить эту длл-ку что бы потом не удовлетворять все ее зависимости, что бы она была сама по себе? Название: Re: Проблема с длл-ками Отправлено: crackedmind от Декабрь 04, 2009, 11:38 Ну для начала так сделать.
Код: QLibrary myLib("libdll"); Название: Re: Проблема с длл-ками Отправлено: crackedmind от Декабрь 04, 2009, 11:40 Цитировать Тогда еше вопрос можно ли как то скомпилить эту длл-ку что бы потом не удовлетворять все ее зависимости, что бы она была сама по себе? заменить опцию /MD на /MT, вместо динамического рантайма, будет использоватся статический.Название: Re: Проблема с длл-ками Отправлено: niXman от Декабрь 04, 2009, 11:44 Цитировать а как лучше? так: Код т.е. strcpy() в любом случае копирует в начала массива, а не ищет первый нулевой, как это делает strcat(). Название: Re: Проблема с длл-ками Отправлено: ecspertiza от Декабрь 04, 2009, 12:33 Всем спасибо, разобрался :) Поставил в свойствах /MT и все)))
Название: Re: Проблема с длл-ками Отправлено: Igors от Декабрь 04, 2009, 14:25 Код
Код
Всем спасибо, разобрался :) Поставил в свойствах /MT и все))) Хммм... пока все :)Название: Re: Проблема с длл-ками Отправлено: niXman от Декабрь 04, 2009, 14:47 Цитировать "Microsoft " - это 10 символов а не 9 Верно. Не обратил внимания. |