Zum Inhalt springen

Speicheradressierungsfehler ?


Empfohlene Beiträge

Geschrieben

Folgendes Problem:

Ich habe eine DLL eingebunden, die eine Funktion enthält von der ich weder Dokumentation hab noch weiss ich wie sie arbeitet, jedoch weiss ich, dass sie funktioniert. Sie nennt sich: IpsEncrypt.

Die DLL is vor zich Jahren mal gekauft worden für Passwortverschlüsselung in gewissen Bereichen bei uns.

Erklärung der Funktion:

IpsEncrypt: Passwort verschlüsselung

Parameter: char*, char *, int

Der erste Parameter ist das normale Passwort, der Zweite das verschlüsselte (wird also in der Funktion beschrieben) und der int ist die Länge des verschlüsselten Passworts.

Lange rede kurzer sinn, mein Code:

JNIEXPORT jstring JNICALL Java_database_Crypt_IpsEncrypt
(JNIEnv * env, jobject obj, jstring name) {
HINSTANCE hLib = NULL;
hLib = LoadLibrary(IPS_ENCRYPT);

typedef bool (*pIpsEncrypt)( char *, char *, int );
pIpsEncrypt function = reinterpret_cast< pIpsEncrypt >( GetProcAddress( hLib, "IpsEncrypt" ) );


if(hLib != NULL){
if( function != NULL )
{
char s1[100];
char s2[100];
strcpy(s1, env->GetStringUTFChars(name, false));

int n1 = 8;

function(s1, s2, n1);

printf("Passwort Enc aus C++: ");
printf(s2);

return env->NewStringUTF( s2 );
}
}

printf("Null returned");
return NULL;

}[/PHP]

Es entstehen, so Vermutungen, Speicheradressierungsfehler beim Freigeben der beiden Chararrays s1,s2 während dem Schliessen des Programms und dadurch wird der Fehler erzeugt, aber wissen tu ich das nicht.

Die Fehlermeldung die entsteht (Fehler4.jpg) tritt 2 mal auf einmal vor Aufruf der Funktion und einmal nachher.

Vielleicht gibt es wen, der eine Idee hat, wie ich diese Fehlermeldungen im warsten Sinne des Wortes ausblenden oder verschwinden lassen kann.

Durch ignorieren der Fehlermeldungen läuft schließlich mein Programm korrekt weiter und das Passwort wird korrekt verschlüsselt ausgegeben.

Danke

post-51116-14430448050808_thumb.jpg

Geschrieben

hmm, nach langem googlen hab ich jetzt paar Ideen:

Re: chkesp.c line 42 runtime error?

Da wird gemeint, dass es mit unterschiedlichen Headern erzeugt wurde und man beides neu kompilieren soll, aber das geht ja bei dir nicht.

Debug : File :i386\chkesp.c ERROR - C / C++ Forum

Da bin ich auf die Idee gekommen, dass es am Funktionsnamen liegen könnte.

(Ich hatte vorriges Jahr ein ähnliches Problem)

Schau am Besten mal mit dem Depency Walker nach, ob die Funktion immernoch so heißt.

bzw. hast du ein .DEF-File zu der DLL?

Geschrieben (bearbeitet)

Zu der DLL gibt es nichts, echt nichts. Nur die DLL.

Der Funktionsname is richtig, du meinst doch den Namen der Funktion in der DLL?

Ich habe ein Centura Programm hier liegen, das die Funktion genau so verwendet.

Ich hab mir mal deinen Link von deinem Problem angeschaut.

Meinst du es liegt an meiner Funktionsdefinition ?

Bearbeitet von sYnest
Geschrieben
Ich hab mir mal deinen Link von deinem Problem angeschaut.

Meinst du es liegt an meiner Funktionsdefinition ?

Hmm, könnte sein, aber bei meinem Problem, hab ich ja nur die DLL anders exportiert.

Dennoch würd ich nicht typdef nehmen. ;)

Der Funktionsname is richtig, du meinst doch den Namen der Funktion in der DLL?

Ja, mein ich.

Hast du nachgeschaut, dass der Name nicht erweitert wurde und die Rückgabe-/Parametertypen stimmen?

Geschrieben

Nuja, ich versuch ja nur alles auszuschließen.

;for the function is a C-string and it will never be equal to the

;C++ mangled name for the function

Schau einfach nach, wenns das auch nicht ist, dann können wir ja weiterrätseln. ;)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...