tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
378
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    asdfghjkl1234 asdfghjkl1234 ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Hallo,

    ich habe eine DLL geschrieben und möchte diese in VB integrieren und einen Wert zurückbekommen. Nur leider stürzt VB sofort ab nachdem die Funktion aufgerufen wird.

    VB
    Deklaration Funktion
    Code :
    1
    
    Declare Function MooreRukovenaDLL Lib "C:\...\MooreRukovenaDLL.dll" Alias "_MooreRukovenaDLL@4" (ByRef p As Double) As Double

    Den Alias habe ich über den Dumpbin /Exports Befehl ausgelesen.

    Funktionsaufruf
    Code :
    1
    
    MooreRukovenaDLL (DQ)

    C++
    Deklaration Funktion
    Code :
    1
    
    extern "C"  __declspec(dllexport)  void WINAPI MooreRukovenaDLL(double*);

    Funktion
    Code :
    1
    2
    3
    4
    
    void WINAPI MooreRukovenaDLL(double* Dq)
    {
    *DQ = 1;
    }

    Ich habe auch schon viele andere Varianten der Funktionsdeklaration in C++ verwendet, aber diese funktioniert am besten. Bei anderen Varianten wurde die DLL oft noch nicht mal von VB gefunden.

    Ich bin nach zwei Tagen ausprobieren mit meinen Latain am Ende.
    Vielleicht hat ja jemand von euch eine Lösung parat.

    Besten Dank im Voraus!
     

  2. #2
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    hast du mal versucht keinen pointer zu übergeben sondern nur werte?

    ausserdem deklarierst du die funktion als double in VB, aber als void in C.
     

  3. #3
    asdfghjkl1234 asdfghjkl1234 ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Hallo,

    danke für die Antwort. Ich habe beide Varianten durchgeführt, dass Ergebnis ist allerdings das gleiche.
    Excel stürzt nach dem Funktionsaufruf sofort ab.
    Ich könnte noch verrückt werden.
     

  4. #4
    asdfghjkl1234 asdfghjkl1234 ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Ich habe den Fehler jetzt eingegrenzt.

    Und zwar deklariere ich in der DLL zwei 2D dynamische Float Felder, mit ca. 11000 Elementen in jeder Dimension. Wenn ich eines der Felder, egal welches, auskommentiere funktioniert meine DLL. Nur wenn ich beide zur gleichen Zeit verwende stürzt Excel ab.

    Ich verstehe den Fehler nicht. Könnte es darin liegen, das die beiden Felder zusammengenommen für eine DLL zu groß sind?
    Als Exe finktioniert der Code wunderbar.
     

  5. #5
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Wie deklarierst du diese Felder? Mit 'new' oder 'malloc' sollte es kein Problem sein, ansonsten sprengst du vermutlich den Stack.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  6. #6
    asdfghjkl1234 asdfghjkl1234 ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Ich deklariere die Felder mit 'new'.
    Mich verwundert warum die Exe funktioniert und die DLL nicht.
    Das macht doch gar keinen unterschied.
     

  7. #7
    asdfghjkl1234 asdfghjkl1234 ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Ok, ich habe meinen Code etwas umgeschrieben so das es jetzt funktioniert.
    Nun möchte ich allerdings noch ein 2d Array von VB an die DLL übermittel.
    Wie geht das? Hat jemand ein Code-Beispiel?
    Mit den Lösungen die ich in Google gefunden habe, kann ich nichts anfangen.

    Gruß
     

Ähnliche Themen

  1. htaccess implementieren ?
    Von kroesi im Forum Hosting & Webserver
    Antworten: 8
    Letzter Beitrag: 31.01.08, 09:35
  2. Profiler in CPP implementieren
    Von sahili im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 28.06.07, 15:31
  3. BufferedReader implementieren
    Von tbgeeee im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 06.02.07, 16:14
  4. BB-Code in PHP implementieren
    Von Scorpion-Stinger im Forum PHP
    Antworten: 13
    Letzter Beitrag: 17.11.06, 16:15
  5. Pearl in JSP implementieren
    Von Anna knolli im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 4
    Letzter Beitrag: 26.11.03, 13:52