Пишу простой сниферок консольный. Ничего особенного. MASM v10. В какой-то момент вдруг линкер выдает ошибки ... Код (Text): Microsoft (R) Macro Assembler Version 6.14.8444 Copyright (C) Microsoft Corp 1981-1997. All rights reserved. Assembling: C:\_temp\sniff\!01\sniff01.asm Microsoft (R) Incremental Linker Version 5.12.8078 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. masm32.lib(line.obj) : error LNK2001: unresolved external symbol _CreatePen@12 masm32.lib(line.obj) : error LNK2001: unresolved external symbol _DeleteObject@4 masm32.lib(line.obj) : error LNK2001: unresolved external symbol _LineTo@12 masm32.lib(line.obj) : error LNK2001: unresolved external symbol _MoveToEx@16 masm32.lib(line.obj) : error LNK2001: unresolved external symbol _SelectObject@8 masm32.lib(line.obj) : error LNK2001: unresolved external symbol _GetDC@4 sniff01.exe : fatal error LNK1120: 6 unresolved externals Что делать. Ну функций этих у меня в листинге, естественно, и в помине нет. Но как-то ж дописать хочется. Не подскажите что делать? Может кто-то встречал,
не работает вот эта строка ... Код (Text): .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\masm32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\masm32.lib include \masm32\Macros\Strings.mac Main PROTO .data _command db 50 dup(0) .code start: invoke Main invoke ExitProcess,0 ;==================================================================== ;==================================================================== Main proc invoke GetCL,1,ADDR _command .if (eax!=1) invoke StdOut,$CTA0('[-]missing of one of two of command line of parameters ...\n') .endif ret Main endp end start Почему?
дык написало же: line.obj. Модуль входит в masm32.lib. Почему оно вылезает? Потому что А в line.asm не что иное, как Код (Text): invoke GetDC,hndl mov hDC, eax invoke CreatePen,0,1,colr mov hPen, eax invoke SelectObject,hDC,hPen mov hPenOld, eax invoke MoveToEx,hDC,x1,y1,NULL invoke LineTo,hDC,x2,y2 invoke SelectObject,hDC,hPenOld invoke DeleteObject,hPen Убери из строки слово "line". Или поставь двойные кавычки вместо одинарных.