tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
634
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    engelmarkus engelmarkus ist offline Mitglied Brokat
    Registriert seit
    Sep 2007
    Beiträge
    473
    Guten Abend zusammen!
    Ich habe hier eine kleine DLL in Assembler geschrieben:
    Code asm:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    [BITS 32]
     
    GLOBAL _CPUID
    EXPORT _CPUID
     
    section .code
      _CPUID:
        mov eax, 1
        cpuid
      ret

    Dieses Stückchen Code kompiliere und linke ich folgendermaßen zu einer DLL:
    nasm -F null -l %1.lst -f win32 -Ox %1.asm
    link %1.obj /DLL /DEBUG /MANIFEST /NODEFAULTLIB /NOENTRY
    Dazu benutze ich den Microsoft Incremental Linker.
    Jetzt kann ich diese DLL in C so benutzen:
    Code c:
    1
    2
    3
    
    extern "C" int CPUID();
    ...
    int i = CPUID();

    Nur habe ich ein Problem, wenn ich das jetzt auch in VB.Net machen möchte:
    Code vbnet:
    1
    2
    3
    
         <DllImport("cpuid.dll")> _
         Function CPUID() As Int32
         End Function
    So gibt es beim Aufruf der Funktion eine Access Violation. Ist in diesem VB.Net-Code ein Fehler?
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Probier's mal so:
    Code vbnet:
    1
    2
    3
    
    <DllImport("cpuid.dll", CallingConvention := CallingConvention.Cdecl)> _
         Function CPUID() As Int32
         End Function
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    engelmarkus engelmarkus ist offline Mitglied Brokat
    Registriert seit
    Sep 2007
    Beiträge
    473
    Jetzt ist es interessanterweise so, dass sich verschiedene Sachen abwechseln. Trotz Breakpoint beendet sich das Programm einfach, ohne dass eine Meldung über eine Exception im Direktfenster kommt. Ein anderes mal gibt es eine StackOverFlowException in "Unbekanntes Modul". Ganz am Anfang war auch einmal die AccessViolation .
    Soll ich die Dateien mal anhängen?
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Ja, häng das Projekt ruhig mal an.

    Bei mir funktioniert ein Mini-Testprogramm problemlos.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    engelmarkus engelmarkus ist offline Mitglied Brokat
    Registriert seit
    Sep 2007
    Beiträge
    473
    So, bitteschön .
    Ich hoffe, das hängt nicht damit zusammen, dass ich ein 64-bit-Windows verwende. Andererseits hab ich alles so eingestellt, dass es 32-bit Code erzeugt, und die C-Version geht ja.
    Angehängte Dateien Angehängte Dateien
    Geändert von engelmarkus (15.05.09 um 23:00 Uhr)
     

Ähnliche Themen

  1. access violation
    Von alice in wunderlan im Forum Cinema 4D
    Antworten: 3
    Letzter Beitrag: 26.02.10, 12:51
  2. [C] Pointer: Access Violation
    Von nickoff im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 30.03.08, 12:21
  3. Access Violation!?
    Von shader09 im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 03.03.08, 15:39
  4. [c++]Access Violation am Programmende
    Von nacho25 im Forum C/C++
    Antworten: 21
    Letzter Beitrag: 25.02.05, 23:11
  5. access vîolation
    Von derGugi im Forum Delphi, Kylix, Pascal
    Antworten: 2
    Letzter Beitrag: 15.04.03, 16:10