![]() |
Native WIN API и MSVCR80.dll
Пишу в Visual Studio 2005. Выбрал проект Win32 Application. Написал программу на голом вин апи. скомпил релиз, полез проверять на вирус тотал и оказалось, что моя прога юзает MSVCR80.dll
Какого [вырезано цензурой] дллка от фреймфорка линкуется вместе с моим вин32 приложением? Если в настройках выбрать не использовать манифест файл, то прога не запускается. Как с помощью VS 2005 скомпилить приложение, использующее только системные длл (не требующее фреймворка)? |
тема просто боян...
писал я это в http://forum.antichat.ru/thread33202.html для начала пропиши в файлике начале Цитата:
ну а самое главное чтобы отвязатся от DLL надо слинковать ее статически за это отвечает опция /MT - вместо /MD |
чуть не забыл
void New_WinMain(){ExitProcess(0);} |
thanx, попробую
|
Цитата:
|
в той длл лежат функции Си и CTR (вроде так называются) обявляя новую точку входа ты обходишь CTR обьявляя /NODEFAULTLIB ты отказываешься от всех стандартных библиотек Си и Си++
а /MT поможешь тебе с "переносимостью" твоих exe на другие компы. если ты свои проги будешь писать с динамической подключалкой то тебе придется везде с собой таскать несколько DLL размером в ~500кб потомучто у юзверев без уставновленого MSVCR80.dll твоя прога будет вылетать с сообщением "...переустановите программу..." бла бла (эта дллка кстати входит в какойто пак иногда видел наверно с играми тебе ставится чето типа vcredist_x86.exe и он весит не мало...) |
Лезиш в свойства проекта. Общие свойства С/С++ И там Ставишь
Использовать MFC - использовать стандартные библиотеки Windows. или ищи опцию - No Using MFC |
2 slesh поверь это не спасает ) и юзать или не юзать mfc узказывается еще при создании проекта... а для вин приложений написаных с нуля это win32 empty project :)
беда мелкосовтовской студии много лишнего тот же CRT - это проверки на переполнение буффера и всякие другие заморочки... и просто так его отключить никак незя хех |
нашел решение.
Код:
// Параметры для минимизации размера EXE-файла.Код:
HINSTANCE hInst = GetModuleHandleA(NULL);Вместо memset: Код:
void dg_memset(void* output, int value, int len)Код:
void dg_memcpy(void* output, void* input, int len) |
memset(buff,0x00,buflen) = ZeroMemory
memcpy - CopyMemory memset - FillMemory есть еще MoveMemory а ваще http://msdn.microsoft.com/en-us/library/aa909240.aspx строковые есть стандартные типа StrCpy а ваще http://msdn.microsoft.com/en-us/library/ms646979.aspx работа с файлами макросы есть f=_lcreat("d.txt", 0); _lwrite(f,(LPCCH)mem,4096); _lclose(f); давай че еще найдешь интересного сюда пиши! ) ибо я сам мало знаю |
| Время: 17:49 |