1

Crypto++ ライブラリは、cryptlib.libおよびに対してコンパイルすることにより、遅延バインディングをサポートしcryptopp.libます。これには、 を使用する必要がありますcryptopp.dll。これにより、この dll を遅延ロードしようとすると/DELAYLOAD:cryptopp.dll、必要なインポートのために遅延ロードできなかったというリンク エラーが発生します。

例として、次のコードを参照してください。

#include <Crypto++/dll.h>
#include <crypto++/base64.h>

bool HexDecode(const std::string& strHex, std::string& strData)
{
    try
    {
        CryptoPP::StringSource(strHex, true,
            new CryptoPP::Base64Decoder(
                new CryptoPP::StringSink(strData)));
    }

    catch(...)
    {
        return false;
    }

    return true;
}

これにより、次のリンク エラーが発生します。

LINK : fatal error LNK1194: Delay loading "cryptopp.dll" not possible because of import of data symbol ""__declspec(dllimport) bool (__cdecl* CryptoPP::g_pAssignIntToInteger)(class type_info const &,void *,void const *)" (__imp_?g_pAssignIntToInteger@CryptoPP@@3P6A_NABVtype_info@@PAXPBX@ZA)". Link without /DELAYLOAD:cryptopp.dll

ロードの遅延にcryptopp.dll成功した人はいますか?

4

1 に答える 1