Есть вот такой способ клипать проекты: http://pblog.ru/?p=90 Я объявляю функции: Код (Text): function CreateWindowEx(dwExStyle: DWORD; lpClassName: PChar; lpWindowName: PChar; dwStyle: DWORD; X, Y, nWidth, nHeight: Integer; hWndParent: HWND; hMenu: HMENU; hInstance: HINST; lpParam: Pointer): HWND; stdcall; external user32 name '_CreateWindowExA@48'; function GetDC(hWnd: Integer): integer; stdcall; external user32 name 'GetDC@4'; С CreateWindowEx проблем нет! В Bat файле: Код (Text): @echo off DCC32 -JP project.PAS @LINK /ALIGN:4 /FORCE:UNRESOLVED /SUBSYSTEM:WINDOWS /MERGE:.data=.text /MERGE:.rdata=.text /ENTRY:main$qqrv /STUB:stub.bin user32.lib project.obj @DEL project.DCU @DEL project.OBJ pause Все нормально комплируется, вывод линкера: Но при запуске программы в момент вызова GetDC вылетает, что память по адресу... не может быть Written. В чем может возникать проблема?! --- И еще один вопрос: знает ли кто, "@число" в имени объявляемой функции это размер занимаемый указателями на параметры функции (количество_параметров * 4)?
wsd HandleFinally я замечал в дебагере, что это - понятия не имею. Линковка проходит нормально. Он не находит в библиотеке GetDC? Этож какже?! :/
А он не думает. Этот ключик нужен, чтобы слинковать "кривым" способом не учитывая ненужные внешние проги. Но без GETDC получаем то, что имеем.
Код (Text): @LINK /ALIGN:4 /SUBSYSTEM:WINDOWS /MERGE:.data=.text /MERGE:.rdata=.text /ENTRY:main$qqrv /STUB:stub.bin user32.lib kernel32.lib project.obj Линкую, вылетает тоже самое. Пытался и SHELL32.LIB линковать
А,вначале? Походу прокалило, но осталось это: Код (Text): error LNK2001: unresolved external symbol @@HandleFinally$qqrv
Ну так теперь можно вернуть /FORCE:UNRESOLVED Эта функция нафиг не нужна. Гурманы могут попробовать изготовить obj с этим входом и секциями нулевой длины. Но по моему линкер не берет такие имена.