Ich brauche Kryptographie in meinem Projekt (Visual C++ 2008 SP1, EXE mit mehreren DLLs, verwenden Sie einige Drittanbieter-Bibliotheken). Ich habe Crypto ++ gewählt. Ich benutze es als statische Bibliothek. Zuerst habe ich alle Funktionen getestet, die ich in der Testkonsole brauche, und alles funktioniert gut.Crypto ++ seltsam stürzt ab
Dann begann ich diese Funktion in das Projekt zu integrieren.
Und es stürzt auf vielen cryptopp Funktionsaufrufe, einschließlich sehr einfach wie diese hier:
CryptoPP::FileSource file("publicKeySign.der", true);
Während der Aufruf dieser Zeile Code, Anwendung abstürzt mit:
Unbehandelte Ausnahme bei 0x00c56619 in Starter.exe: 0xC0000005: Zugriffsverletzungsleseort 0x00006f70.
Hier ist mein Call-Stack:
Starter.exe!CryptoPP::member_ptr<CryptoPP::AlgorithmParametersBase>::reset(CryptoPP::AlgorithmParametersBase * p=0x00000000) Line 50 + 0x9 bytes C++
Starter.exe!CryptoPP::AlgorithmParameters::operator()<char const *>(const char * name=0x00d8ec04, const char * const & value=0x00d88a44, bool throwIfNotUsed=true) Line 356 C++
Starter.exe!CryptoPP::MakeParameters<char const *>(const char * name=0x00d8ec04, const char * const & value=0x00d88a44, bool throwIfNotUsed=true) Line 388 + 0x2d bytes C++
Starter.exe!CryptoPP::FileSource::FileSource(const char * filename=0x00d88a44, bool pumpAll=true, CryptoPP::BufferedTransformation * attachment=0x00000000, bool binary=true) Line 65 + 0x6d bytes C++
Starter.exe!PDD::PDDApp2::Open() Line 237 C++
Starter.exe!WinMain(HINSTANCE__ * __formal=0x00c50000, HINSTANCE__ * __formal=0x00c50000, HINSTANCE__ * __formal=0x00c50000, HINSTANCE__ * __formal=0x00c50000) Line 387 + 0xb bytes C++
Starter.exe!__tmainCRTStartup() Line 578 + 0x1d bytes C
[email protected]@12() + 0x12 bytes
[email protected]() + 0x27 bytes
[email protected]() + 0x1b bytes
Sowohl mein Projekt und Krypto ++ verwenden Multi-Thread-DLL-Laufzeitbibliotheken.
Ich habe versucht, crypto ++ Projektoptionen zu ändern, damit sie meinen Projektoptionen entsprechen, aber es hilft nicht (nach einigen Änderungen stürzt die Anwendung mit einem anderen Aufrufstack ab).
Irgendwelche Ideen werden geschätzt!
Danke!
Anton
Ah, der Spaß nicht verwalteten Code-Ausführung. Ich würde dir raten, ein paar statische Code-Analysatoren loszulassen, bis du den Teil gefunden hast, an dem es schief geht. CryptoPP ist eine relativ stabile Lib, also würde ich zuerst sicherstellen, dass der eigene Code korrekt ist, und dann den Code der neuesten CryptoPP-Bibliotheken testen ... –