Visual Studio(переносимость)

Тема в разделе "MS Visual C++", создана пользователем Mungust, 15 апр 2010.

  1. Mungust

    Mungust Гость

    Название можетне точно отражает суть, а она в следующем. После компиляции программы на С++ даже в release версии она потом упорно не желает работать на машинах, где неустановлена Visual Studio(у меня конкретно VS2008). Нужна ему вроде библиотека MSVCR90D.dll, если верить тоталу. Я так понимаю, что нужно проект компоновать с какими-то другими lib файлами. Может подскажете с какими конкретно? Буду очень благодарен :)
     
  2. zeus

    zeus Гость

    Нужно войти в свойства и в разделе Code Generation (кажется) указать статические либы... я могу ошибаться в названии (потому что я по памяти) но суть такая, что вы компилите проект с ссылками на дин. либы, а нужно на статич. либы вот и все )))
     
  3. Odin_KG

    Odin_KG Гость

    Mungust
    Вот так попробуйте:
    1) Configuration Properties->General->Use of MFC = Use MFC in a Static Library
    2) Configuration Properties->C/C++->Code Generation->Runtime Library = Multi-threaded (/MT) (для Release-версии)
     
  4. Mungust

    Mungust Гость

    - хмм, немного не понял. Статические (*.lib) компонуются с программной для статического связывания с dll, иначе нужно использовать LoadLibrary() и импортировать функции. То есть мне нужно скомпоновать программу с другими lib-файлами, которые свяжут с dll, которые есть в любой XP. Я собственно это и собирался делать, но вот этих msvcтраляля.lib там по папкам туча разных и хрен знает какие нужны :)

    Odin_KG, попробую, проверю, отпишусь...
    Ну и спасибо, что не проигнорировали :)
     
  5. zeus

    zeus Гость

    Не существует такого понятия, как статического связывания с dll %) Есть динамически подгружаемые библиотеки (DLL), а есть статические библиотеки (Lib)
    Odin_KG все верно подсказал, я имел ввиду тоже самое, только он написал более конкретно =)
     
  6. Odin_KG

    Odin_KG Гость

    Не... принцип совсем не такой. Если вы используете MFC, то компилятор может либо положить эту MFC прямо в ваш exe-файл, либо ожидать, что MFC будет уже существовать на компьютере в виде отдельной DLL. По-умолчанию VS настроена на вариант 2. Но в реальности этой DLL почти ни у кого нет, так как программисты у нас далеко не все. Значит, вам нужно использовать вариант 1, т.е:
    1) Configuration Properties->General->Use of MFC = Use MFC in a Static Library
    В этом случае MFC окажется внутри вашего exe и проблема с совместимостью решится, при этом exe-файл увеличиться в размерах, но это того стоит.
     
  7. Mungust

    Mungust Гость

    Все, разобрался, понял что по сути вы одно и тоже говорите и понял то, что не понял что имел в виду zeus. Пункт 2) помог, а пишу на чистом API и MFC не испльзую, а нужная библиотека есть MS Visual C Runtime и оттуда берутся стандартные функции языка(ну и сервисные всякие, вставляемые компилятором).
     
  8. Mungust

    Mungust Гость

    - ну в таком случае есть два варианта: или статическоесвязывание с dll существует, или Джеффри Рихтер лох педальный Х(. Если по его книге я собственно учился создавать dllки и подключать к своим программам и у меня это получалось, то думаю он все-таки не лох :sorry:. lib-файлы это не библиотеки(хотя я может чего не знаю и туда можно при желании реализацию впихнуть). Они нужны именно для статического связывания с dll. Для статического связывания нужен lib и h файлы для dll функций. Компилятор в итоге вносит нужные dll в раздел импорта программы, и система, прочитав его, загружает нужную dll в адресное простанство процесса при старте программы. То есть связывание статическое, но загрузка библиотеки все равно динамическая. При динамическом связывании с dll ты вручную загружаешь библиотеку в нужный момент, достаешь из нее адреса нужных функций(предварительно создав соответствующий тип и переменную указателя) и собственно по указателя вызываешь. То есть "динамически подгружаемые библиотеки (DLL), а есть статическое и динамическое и ними связывание". В конце концов во всех по всем путям из переменных окружения VS лежат lib, а требует все равно dll. Но это все лирика, спасибо всем за помощь = )
     
Загрузка...
Похожие Темы - Visual Studio(переносимость)
  1. gvik
    Ответов:
    0
    Просмотров:
    14
  2. Zhuk
    Ответов:
    0
    Просмотров:
    549
  3. animelubitel
    Ответов:
    0
    Просмотров:
    744
  4. Devart3009
    Ответов:
    0
    Просмотров:
    958
  5. marik22222
    Ответов:
    1
    Просмотров:
    1.208

Поделиться этой страницей