08:01

< Хроническое исключение > Когда все считают, что ты маленький, белый и пушистый, не спеши показывать свои когти и зубы
[ok]

Microsoft Visual Studio 2005
Кратко:
Как оторвать создаваемое приложение от RunTime бибилиотек VC++. (msvc80.dll)

Описание:
1. Пишется приложение (могут быть и EXE и DLL)
2. При сборке оказывается, что для его работы нужно с собой тащить библиотеку msvc80.dll. В приложении ни одна из функций этой библиотеки в не истользуется.
3. Отключаю все библиотеки по умолчанию.
При сборке LINKER сообщает вызов неизвестного обекта _memset

PS. Если кто знает где спроить с большей вероятностью ответа скажите.
А то тащить почти 1МБ библиотеку с приложением на 15 - 60 кб как то странно (особенно есть из библиотеки используется 1 функция)

@темы: B Grade, Программирование

Комментарии
19.11.2007 в 08:37

Крайне злопамятное хамло ;)
Проблема в том, что любая программа написанная под vs8.0 будет работать только с установленной .Net Framework.
Твой выбор такой
1. Линковать MFC библиотеки статически.
ALT P + P=> General=> Use Of MFC: Use MFC in a static library
ALT P + P=> C/C++=> Code Generation=> Runtime Library : multi-threaded
Ну и ALT P + P=> Linker=> Manifest File=> Generate Manifes=> No

2. По прежнему использовать динамическую линковку тогда тебе нужно
Почитай статью
Поставить на машину заказчика ту версую .net framework, которая была использована для разработки. Она потянет за собой IE и WindowsInstaller а также необходимые сервис паки.


(C) VinGrad


А вообще, запуск любого приложения, написанного на VC++ это уже функция msvc80.dll, и ничего с этим не поделать)
Я в свое время так же мучался с файлом msvbvm60.dll, который еще круче по размеру)) Решил программу, скомпилировав ее в VB5 вместо VB6, т.к. рантаймы VB5 тогда были уже во всех дистрибутивах винды)
19.11.2007 в 10:10

< Хроническое исключение > Когда все считают, что ты маленький, белый и пушистый, не спеши показывать свои когти и зубы
Спасибо, изучаю.

Похоже, что снова придётся вспоминать где Studio 2003, там удавалось.
19.11.2007 в 11:30

любая программа написанная под vs8.0 будет работать только с установленной .Net Framework

разве? нормальную экзешку (хоть с MFC хоть без) там скомпилировать нельзя? как в vs 2003
19.11.2007 в 11:32

запуск любого приложения, написанного на VC++ это уже функция msvc80.dll

вот это по-моему уже не совсем корректно
19.11.2007 в 11:33

Крайне злопамятное хамло ;)
Enkryptor Понятия не имею, если честно)) Последняя VS, которой я пользовался, была шестая)
19.11.2007 в 12:13

решаем проблемы с головой!
msvc80.dll

msvc80.dll или msvcr80.dll ?
19.11.2007 в 12:16

MEG_the_grey, уточни плиз, какой проект ты создаёшь:

19.11.2007 в 14:24

< Хроническое исключение > Когда все считают, что ты маленький, белый и пушистый, не спеши показывать свои когти и зубы
techsupport Да, опечатка библиотека msvcr80.dll
Enkryptor Проект Win32 -> Win32 Application. В мастере: Windows Application, Empty project
19.11.2007 в 14:39

хм, ну по идее в этом случае msvcr80.dll не требуется, если из неё не вызывается ни одной функции

как выковырять api из dll - фиг знает... нашёл вот эту тему - www.wasm.ru/forum/viewtopic.php?pid=204186 - но там похоже консенсус так и не нашли
20.11.2007 в 08:03

< Хроническое исключение > Когда все считают, что ты маленький, белый и пушистый, не спеши показывать свои когти и зубы
Похоже есть ответ.
Работает вариант с назначием точки входа в программу
#pragma comment(linker, "/ENTRY:start") где start - точка входа (void start (void))

но все установка всех прочих параметров сильно похоже на шаманство с бубном.