[Erledigt] asm dll in winanwendung benutzen.
-
Hi, ich habe eine dll in assembler, die ich gerne in einem cpp benutzen würde.
der asm-code der dll:
.386 .model flat,stdcall option casemap:none include windows.inc include kernel32.inc includelib kernel32.lib include user32.inc includelib user32.lib c_BarrierX equ 800 c_winXtolerance equ 75 c_winYtolerance equ 75 WM_MOUSEHOOK equ WM_USER + 6 .data hInstance dd 0 .data? hHook dd ? hWnd dd ? .code DllEntry proc hInst:HINSTANCE, reason:DWORD, reserved1:DWORD push hInst pop hInstance mov eax,TRUE ret DllEntry Endp MouseProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD assume edx:PTR MOUSEHOOKSTRUCT invoke PostMessage,hWnd,WM_MOUSEHOOK, wParam, lParam mov edx,lParam invoke CallNextHookEx,hHook,nCode,wParam,lParam xor eax, eax xor edx, edx assume edx:nothing ret MouseProc endp InstallHook proc hwnd:DWORD, targetThread:DWORD push hwnd pop hWnd invoke SetWindowsHookEx,WH_MOUSE,addr MouseProc,hInstance,targetThread mov hHook,eax ret InstallHook endp UninstallHook proc invoke UnhookWindowsHookEx,hHook ret UninstallHook endp End DllEntrydie def-datei:
LIBRARY MouseHookDLL EXPORTS MouseProc InstallHook UninstallHookund die assembler/Linker Befehle:
%BINDIR%\Ml.exe /nologo /c /coff /Cp /I%INCLUDE% %HOOKDLL%.asm if errorlevel 1 goto errasm %BINDIR%\Link.exe /nologo /SECTION:.bss,S /SUBSYSTEM:WINDOWS /LIBPATH:%LIBS% /DLL /DEF:%HOOKDLL%.def %HOOKDLL%.obj if errorlevel 1 goto errlinkdas Bauen funktioniert, es wird eine dll und eine lib erstellt.
Ich schaff es aber nicht die dll einzubinden.
in den projekteinetellungen habe ich die lib eingebunden.im cpp code habe ich foilgende forwardeklarationen:
extern DWORD WINAPI InstallHook(HWND msgReceiver, DWORD threadIDToHook); extern void WINAPI UninstallHook();Hoffe jemand von euch hat nen Tip, warum der Linker die Symbole im Code nicht auflösen kann.
-
Ich glaube wenn du einen C++ Compiler verwendest, solltest du die Funktionen die du von der *.dll importierst mit exter "C" statt nur "extern" deklarieren.
-

Ich Trottel!
Danke, jett gehts