プロジェクトで暗号化を使用する必要があります(Visual C++ 2008 sp1、いくつかのDLLを持つexe、サードパーティ製のライブラリを使用します)。私はcrypto ++を選んだ。私は静的ライブラリとして使用します。まず、テストコンソールアプリケーションに必要なすべての機能をテストしましたが、すべて正常に動作します。crypto ++が異常にクラッシュする
私はこの機能をプロジェクトに統合し始めました。
そしてそれは、このような非常に単純含め、cryptopp関数呼び出しの多くにクラッシュ:0x00c56619で
未処理の例外で:で、このコード行の通話中に
CryptoPP::FileSource file("publicKeySign.der", true);
、アプリケーションのクラッシュStarter.exe:0xC0000005:場所0x00006f70を読み取るアクセス違反。マルチスレッドDLLランタイムライブラリを使用する++
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
どちらも私のプロジェクトと暗号:
は、ここに私のコールスタックです。
私は、プロジェクトオプションと同じになるようにcrypto ++プロジェクトオプションを変更しようとしましたが、一部のアプリケーションを変更した後、別の呼び出しスタックでクラッシュすることはありません。
アイデアをいただければ幸いです!
ありがとうございます!
アントン
ああ、アンマネージコードの実行の楽しさ。あなたが間違っている部分を見つけるまで、静的なコードアナライザの束をゆるめることをお勧めします。 CryptoPPは比較的安定したlibであるため、まず自分のコードが正しいことを確認してから、最新のCryptoPPライブラリのコードをテストします。 –