DLL msvcr100d.dll

 

Добрый день.

Написал простенькую dll в VS C++ 2010

Запустил в терминале и все работает без проблем. Перебросил код программы вместе с библиотекой на другой компьютер и при пробе запуска получил ошибку 126. Оказалось что библиотека вызывает функции из другой библиотеки - msvcr100d.dll и после того как перебросил эту библиотеку в папку system32 другого комьютера все работает нормально.

Подскажите может кто сталкивался с подобной проблемой, как скомпилировать dll так чтобы было достаточно перебросить код и только одну dll в папки терминала любого другого комьютера для нормальной работы.

Спасибо за каждую информацию.

 

Эта либа принадлежит Microsoft Visual C++ 2010 Redistributable Package, отсюда четыре общих способа:

1. Вписать код вызываемой библиотеки в свою (крайне трудно без исходников, практически "жопа")

2. Выяснить что вызывает стороннюю библиотеку и попытаться избавится от этого вызова (иногда лучшее решение, но зависит от того, что было задействовано)

3. Переписать библиотеку на другом языке (переделывать всегда тяжко, но если сильно нужно...)

4. Таки плюнуть и таскать эту библиотеку со своей DLL (добротный и крепкий "костыль", хотя теперь уже фича многих продуктов)

 
pitpiter:

Подскажите может кто сталкивался с подобной проблемой, как скомпилировать dll так чтобы было достаточно перебросить код и только одну dll в папки терминала любого другого комьютера для нормальной работы.

Спасибо за каждую информацию.

Свойства проекта -- Configuration Properties -> C/C++ -> Code Generation -> Runtime Library -> поменять на Multi-threaded [debug]

Пробуйте, на 100% не уверен, но вроде так.

 
TheXpert:

Свойства проекта -- Configuration Properties -> C/C++ -> Code Generation -> Runtime Library -> поменять на Multi-threaded [debug]

Пробуйте, на 100% не уверен, но вроде так.


Common Properties - General - Use of MFC - Use MFC in a Static Library
 
stringo:
Common Properties - General - Use of MFC - Use MFC in a Static Library
При чем здесь MFC ) это CRT либка, которая к MFC вообще никакого отношения не имеет.
 
TheXpert:
При чем здесь MFC ) это CRT либка, которая к MFC вообще никакого отношения не имеет.


:)) stringo прав. пусть сделает как написано.
 
Вы блин пообкуривались что ли? ) ребята. Теплое с мягким путать. Небось за дебаг без бубна не садитесь.
 
TheXpert:
Небось за дебаг без бубна не садитесь.

никахда! )

пока штопикштартер не признается, что у него за dll - будешь прав и ты и stringo.

 
pitpiter:

Добрый день.

Написал простенькую dll в VS C++ 2010

Запустил в терминале и все работает без проблем. Перебросил код программы вместе с библиотекой на другой компьютер и при пробе запуска получил ошибку 126. Оказалось что библиотека вызывает функции из другой библиотеки - msvcr100d.dll и после того как перебросил эту библиотеку в папку system32 другого комьютера все работает нормально.

Подскажите может кто сталкивался с подобной проблемой, как скомпилировать dll так чтобы было достаточно перебросить код и только одну dll в папки терминала любого другого комьютера для нормальной работы.

Спасибо за каждую информацию.


DLL надо собирать в режиме статической линковки, а не в режиме динамических DLL

Вот так: выбрать либо /MT, либо /MTd.


 
sergeev:

никахда! )

У нас кстати на офисе есть штатный ) так что здесь я немного покривил душой )
 
TheXpert:
У нас кстати на офисе есть штатный ) так что здесь я немного покривил душой )


Такой ? http://rozetka.com.ua/maxtone_tc812/p297512/#tab=comments