我需要在我的項目中使用密碼(VISUAL C++ 2008 SP1,EXE幾個dll文件,使用一些第三方庫)。我選擇了crypto ++。我用它作爲靜態庫。首先,我在測試控制檯應用程序中測試了我需要的所有功能,並且一切正常。加密++奇怪的崩潰
然後,我開始這個功能集成到項目中。
而且它崩潰了許多的cryptopp函數調用,包括像這樣的一個非常簡單的:在
未處理的異常在0x00c56619:與
CryptoPP::FileSource file("publicKeySign.der", true);
在這行代碼的調用,應用程序崩潰Starter.exe:0xC0000005:訪問衝突讀取位置0x00006f70。
這裏是我的調用堆棧:
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
我的兩個項目和加密++使用多線程DLL運行時庫。
我試圖改變加密++對他們是一樣的我的項目的選擇項目的選擇,但它並不能幫助(另一個調用棧一些改變應用程序崩潰後)。
任何想法可以理解的!
謝謝!
Anton
啊,非託管代碼執行的樂趣。我建議你放開一堆靜態代碼分析器,直到找到出錯的部分。 CryptoPP是一個相對穩定的庫,所以我首先要確保你自己的代碼是正確的,然後測試最新的CryptoPP庫的代碼... – 2012-04-15 13:09:56