long cppfunc(long arg1) { return 1; } --------------------------------
-------- asmfunc.asm ----------- .386 .model flat, C .code cppfunc proto arg:DWORD asmfunc proc, arg1:DWORD invoke cppfunc, 1 ret asmfunc endp end --------------------------------
Jeg tror nu mest at spm burde lyde på hvordan definerer jeg en prototype i (m)asm til en funktion skrevet i cpp hvis den ser sådan her ud
long cppfunc(long arg1) { return 0; }
hvilken kalde konvension bruges der som default ? stdcall ? eller cdecl ? Kan det være det som er galt da jeg definerer prototypen i (m)asm ? Altså forkert angivet kalde konvension ?
Mød TrackMan og Veo på Computerworld Cloud & AI Festival og hør, hvordan tech ændrer måden, vi træner og udvikler talent – fra skolebold til The Masters.
nej jeg skal ikke have extern "C" på cppfunc... læg mærke til at det der gerne skulle ske er at main kalder asmfunc som kalder cppfunc.. Jeg kan sagtens skrive en funktion i asm og kalde den fra et cpp program ... det som er problemet er det omvendte. altså skrive en funktion i cpp og kalde fra et asm program.
hvordan skal jeg stille prototypen op for i mit asm dokuement for cpp funktionen:
long helloworld( long helloworld, long helloworld ) { }
Den fortæller C++ compileren at navnet cppfunc skal bevares som det er (C style) og ikke som man gør med C++ funktions navne tilføje oplysninger om argumenter for at understøtte function overloading.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.