Не линкуется (или как настроить линкер?)
Зашел по ссылочке http://www.uinc.ru/articles/28/index.shtml. Сделал как сказано, и естественно получил бяку от линкера - не может найти __chkesp (компилится нормально). Ответ в faq'е статьи вроде есть, да только что-то он мне мало о чем говорит. Каким макаром можно заменить CHKESP.obj на свой, в смысле где взять свой CHKESP.obj? Да еще и так, что бы в нем не было ничего лишнего?
Среда разработки VC++ 6.0 SE. Помогите чем могите - очень уж интересно с этим разобраться.
#pragma comment(linker,"/NODEFAULTLIB")
#endif
Кроме того, понадобится функция main(), так как стандартная библиотека содержит ссылку не нее. При указании собственной стартовой точки, функция main() выполняться не будет, и нужна только для успешной линковки.
int main(HINSTANCE hInst,HINSTANCE hPrev, LPSTR lpComLine, int nShow )
{
return 0;
}
#endif
После этого можно нормально отлаживать приложение, а release будет такой же маленький.
Поскольку размер debug build'а не важен, то для отладки можно включить стандартные библиотеки. Для этого можно использовать следующую конструкцию:
#pragma comment(linker,"/NODEFAULTLIB")
#endif
Кроме того, понадобится функция main(), так как стандартная библиотека содержит ссылку не нее. При указании собственной стартовой точки, функция main() выполняться не будет, и нужна только для успешной линковки.
int main(HINSTANCE hInst,HINSTANCE hPrev, LPSTR lpComLine, int nShow )
{
return 0;
}
#endif
После этого можно нормально отлаживать приложение, а release будет такой же маленький.
Не-а, не катит. Размер бинарника тот же, что и без этих наворотв с линкером (генерация отладочной информации отключена). Может, что делаю не так? Убираю _DEBUG из опций проекта, даже #undef _DEBUG в начале вписал - бестолку. Как правильно указать линкеру release версию? Да еще и нужная функция не работает:
#pragma comment(linker,"/ENTRYPOINT:Xmain")
main() оставлен пустой (я кстати и раньше так делал), Xmain() не выполняется! В итоге программа просто ничего не делает.
Эге, нашел Batch Build, снял галку с debug, и получил от линкера, что он не может теперь найти _main (все сдалано как в вашем примере с #ifdef _DEBUG). Можно еще что-нибудь предпринять?
А макроопределение DEBUG обратно включили ?
Если ничего не помогает, могу выслать полный рабочий проект (VC++ 6.0) такого маленького приложения.
Если ничего не помогает, могу выслать полный рабочий проект (VC++ 6.0) такого маленького приложения.
Макроопределение что включено, что выключено - без толку. Проект - высылайте конечно, правда у меня есть уже с uinc скачаный - компилится нормально, а вот при линке...
Может ваш работать будет.