Zum Inhalt springen

sYnest

Mitglieder
  • Gesamte Inhalte

    34
  • Benutzer seit

  • Letzter Besuch

Beiträge von sYnest

  1. ich sag mal so:

    Den Test mit den Chararrays hab ich eben gemacht.

    Übergebe ich Strings so wies nun ist, dann gibt mir die Methode ein true zurück und wird erfolgreich ausgeführt wenn man von diesem Conventionsfehler und den Aspekt, dass der String von dem ich einen Pointer an die DLL Funktion übergebe nicht mehr Aufrufbar ist absieht.

    Mit übergabe von Chararrays wird die Methode nicht erfolgreich ausgeführt was mich dazu bringt zu denken, dass das wohl falsch ist.

    Nicht das man mich falsch versteht, mich stört das die Methode ausgeführt wird und mir sogar ein True zurück gibt, was bedeutet, dass das Passwort verschlüsselt worden ist ich aber im nachhinein nicht mehr auf den String zugreifen kann, der ja verändert wurde durch die DLL Funktion.

    Man sieht das gut am Anhang "Fehler.jpg": Das passiert unmittelbar nach ausführen des Programms, dieser Fehler tritt quasi in der DLL Funktion auf.

    Wenn ich den Conventionsfehler ignoriere ich habe ich dann, wenn man der Console folgt iwie nen erfolgreichen Aufruf der Methode. (Fehler2.jpg)

    Grundlegend hab ich einen String, auf den ich einen Pointer gesetzt habe, den ich an die Funktion übergebe.

    Dieser String (nicht der Pointer) ist nach Aufruf der Funktion nicht mehr aufrufbar. Da ich nicht weiss was die Funktion wirklich macht und es keine Doku gibt hab ich keine Ahnung warum das so ist.

    Mein Programm ist zur Zeit in C++ und so wies aussieht findet die DLL Funktion wohl diese C++ Strings *******e. Daher vllt der Conventionsfehler.

    Jedoch wüsste ich nicht was sich bei der Verwendung von C Strings ändern sollte.

    Um auf die Frage der anderen Daten zu antworten: Ich hab nur die DLL und leider gottes NICHTS anderes, bzw. noch den Aufruf dieser Funktion aus einem Centuraprogramm, was mir aber nicht weiterhilft.

    Zur Übersicht aktueller Code:

    // CtoAvpass32DLL.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
    
    //
    
    #include "stdafx.h"
    
    #include "shlobj.h"
    
    #include <cstdlib> 
    
    #include <iostream> 
    
    #include <string>
    
    
    // name of the DLL to be loaded 
    
    #define IPS_ENCRYPT "avpass32.dll" // <- .dll nicht vergessen 
    
    
    using namespace std; 
    
    
    int main(int argc, char* argv[])
    
    {
    
        HINSTANCE hLib = NULL; 
    
        hLib = LoadLibrary(IPS_ENCRYPT); 
    
    
    	if(hLib == NULL){ 
    
            cout << "DLL konnte nicht geladen werden\n"; 
    
        } 
    
    	else {
    
    		cout << "DLL geladen\n";
    
    	}
    
    
    	typedef bool (*pIpsEncrypt)( string *, string *, int );
    
    	pIpsEncrypt function = reinterpret_cast< pIpsEncrypt >( GetProcAddress( hLib, "IpsEncrypt" ) );
    
    
    	if( function != NULL )
    
    	{
    
    		cout << "Funktion gefunden\n";
    
    
    		string s1	=	"";
    
    		string s2	=	"";
    
    
    		string * p1 = &s1;
    
    		string * p2 = &s2;
    
    
    		int n1		=	8;
    
    
    		try {
    
    			if(function(p1, p2, n1) == 1) {
    
    				cout << "Verschlüsselung erfolgreich!" << endl;
    
    				cout << s2; //FUNTIONIERT NICHT
    
    			}
    
    		}
    
    		catch (...) {
    
    			cout << "Catchbereich!" << endl;
    
    		}
    
    	}
    
    
    
        return EXIT_SUCCESS; 
    
    }
    
    
    
    

    post-51116-14430448049464_thumb.jpg

    post-51116-1443044804984_thumb.jpg

  2. Ne, es gibt keine Dokumentation.

    Das Ding is wohl schon sau alt.

    Einziger Anhaltspunkt, den ich habe ist die Verwendung von der DLL in Centura.

    In Centura:

    Rückgabewert: Boolean

    Parameter: Receive String, Receive String, Number

    Folglich:

    Rückgabewert: Bool(ean)

    Parameter: String(-Pointer), String(-Pointer), int

  3. Ich zeig seit Tagen initiative.

    Bist du hier um zu helfen oder was gedenkst du gerade zutun?

    Wenn du keinen Bock darauf hast jemandem zu helfen und ihn nur darauf hinzuweisen, dass er nichts kann, bist du hier falsch.

    Ich will keine Lösungen oder Codeschnippsel, ich brauch nur jemanden der evtl. meinen Code darauf hin überprüft, ob da Fehler drin sind, die so ersichtlich sind.

    Code wurde übrigens gepostet!

    Okay, und was willst du jetzt von uns wissen? Was den Fehler ausgelöst hat bzw, ausgelöst haben könnte steht ja in der Fehlermeldung schon drin. Zeig doch mal ein wenig Eigeninitiative!

    Richtig das seh ich auch nur sehe ich nicht wo der Fehler bei mir im Code erzeugt wird, da meiner Meinung nach der Aufruf und die Deklaration ein und dieselbe Konvention benutzen

  4. EDIT:

    Um das zu verdeutlichen,

    ich habe grade gemerkt das vor diesem Fehler noch ein anderer Auftritt der wie folgt aussieht:

    Debug Error!

    Program: W:\Haas\CallDLL\Debug\CallDLL.exe

    Module:

    File: i386\chkesp.c

    Line: 42

    The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

    Ich hab auch gemerkt, dass die Funktion ausgeführt wird.

    Und der Fehler danach auftritt, ich kriege also was zurückgegeben bei:

    cout << function(s1, s2, n1);

  5. Da wird auch nachher nichts mehr ausgegeben, nur tu ich das zur Zeit noch zu Testzwecken.

    Im mom. bin ich eigentlich nur dabei eine C++ Consolenanwendung zu schreiben, die auf die Funktion in der DLL zugreifen kann, sollte das der Fall sein kann ich mich ran machen und eine DLL schreiben, die das ganze macht.

    ... und den behälst du für dich, damit wir weiterhin raten müssen und uns von Tatsachen nicht verwirren zu lassen brauchen?!

    Der Fehler ist ein Speicheraddressierungsfehler.

    Halt n Fenster wo drin steht das ich auf Speicher zugreife, auf den ich wohl nicht zugreifen darf.

  6. Danke für Eure Hilfe.

    Ich hab mich nun mal an die Arbeit gemacht ein C++ Programm zu schreiben, dass die DLL implementiert die ich brauche und folgendes Problem ist entstanden.

    Die DLL wird gefunden, die Funktion findet er auch, jedoch beim Aufruf dieser Funktion entsteht ein Fehler.

    
    // CallDLL.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
    
    //
    
    #include "stdafx.h"
    
    #include "shlobj.h"
    
    #include <cstdlib> 
    
    #include <iostream> 
    
    #include <string>
    
    
    // name of the DLL to be loaded 
    
    #define IPS_ENCRYPT "avpass32.dll" // <- .dll nicht vergessen 
    
    
    using namespace std; 
    
    
    int main(int argc, char* argv[])
    
    {
    
        HINSTANCE hLib = NULL; 
    
        hLib = LoadLibrary(IPS_ENCRYPT); 
    
    
    	if(hLib == NULL){ 
    
            cout << "DLL konnte nicht geladen werden\n"; 
    
        } 
    
    	else {
    
    		cout << "DLL geladen\n";
    
    	}
    
    
    	typedef bool (*pIpsEncrypt)( string, string, int );
    
    	pIpsEncrypt function = reinterpret_cast< pIpsEncrypt >( GetProcAddress( hLib, "IpsEncrypt" ) );
    
    
    	if( function != NULL )
    
    	{
    
    		cout << "Funktion gefunden\n";
    
    
    		string s1	=	"v073557";
    
    		string s2	=	"";
    
    		int n1		=	8;
    
    
    		cout << function(s1, s2, n1);
    
    
    	}
    
    
    
        return EXIT_SUCCESS; 
    
    }
    
    
    
    

  7. Hallo zusammen,

    ich arbeite zur Zeit an einem kleinem Java Programm (1.4), in dem ich an eine Funktion aus einer bestehenden DLL heran muss.

    Habe probiert, dies mit Hilfe des JNI zu machen jedoch hab ich bemerkt, dass die DLL dann wissen muss das Sie mit JNI verwendet wird.

    Ich kann die DLL nicht ändern, habe Sie nur zur Verfügung.

    Kann ich auf anderem Wege an eine Funktion in dieser DLL kommen ?

    Mfg Danke

    Patrick

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...