Mam dwa projekty, jeden C#-owy zawierający klasę główną oraz klasę będącą pośrednikiem pomiedzy C# a ASM.
unsafe class AssemblerAdapter
{
[DllImport("asm_dll.dll",CallingConvention = CallingConvention.StdCall)]
private static extern byte* licz(byte* tab, int hei, int wid);
public byte* functionCaller(byte* tab, int height, int width)
{
byte* src = (byte*)(licz(tab, height, width));
return src;
}
}
// metodę tą wywołuję w Form1.cs:
resultPointer = assemblerFunction.functionCaller(sourcePointer, src.Height, stride);
Drugi projekt C++-owy zawiera plik directory.def:
LIBRARY "directory"
EXPORTS
licz
i directory.asm (jest bardziej rozbudowany, ale powiedzmy, że wygląda tak, żeby nie zanudzać kodem, chodzi o coś innego):
.486
.MODEL FLAT, STDCALL
.DATA
tmp dd 0
.CODE
licz PROC, tab: PTR DBYTE, hei: DWORD, wid: DWORD
mov eax, tab
ret
licz ENDP
END
I teraz bardzo dziwna sprawa. Niby nie ma błędów, ale jak postawię breakpointa w pliku .asm to po uruchomieniu aplikacji breakpoint zmienia się na breakpoint: "This breakpoint will not currently be hit." I nie mogę przez to zdebuggować kodu asemblera. BARDZO by mi się przydało jakbym mógł skorzystać z debuggera, a nie mogę z jakichs nieznanych mi powodów. Środowisko: Visual 2010 Professional.
Czy byte* mam zapisać w .asm jako PTR DBYTE?