Libevent在vs2008的连接错误error LNK2019

2>libevent.lib(evutil_rand.obj) : error LNK2019: unresolved external symbol __imp__CryptGenRandom@12 referenced in function _arc4_seed_win32
2>libevent.lib(evutil_rand.obj) : error LNK2019: unresolved external symbol __imp__CryptAcquireContextA@20 referenced in function _arc4_seed_win32

 

 

解决方案:

1) 删除编译后的目标文件(obj文件)

       进至目录\libevent-2.0.15-stable按修改时间排序查看最近生成的obj文件,删除当前目录下面的所有后缀名为obj的文件即可

2) 修改源代码

请修改./libevent-2.0.15-stable/arc4random.c中的arc4_seed_win32为下面的内容(即禁掉调用CryptAcquireContext和CryptGenRandom两个方法,即下图中灰掉背景的行)

 

#ifdef WIN32

#defineTRY_SEED_WIN32

static int

arc4_seed_win32(void)

{

       /* This is adapted from Tor'scrypto_seed_rng() */

       static int provider_set = 0;

       static HCRYPTPROV provider;

       unsigned char buf[ADD_ENTROPY]; 

//注释掉以下代码

        //禁止调用CryptAcquireContext和CryptGenRandom两个方法

       /*

       if (!provider_set) {

             

              if(!CryptAcquireContext(&provider, NULL, NULL, PROV_RSA_FULL,

                 CRYPT_VERIFYCONTEXT)) {

                     if (GetLastError() !=(DWORD)NTE_BAD_KEYSET)

                            return -1;

              }

              provider_set = 1;

       }    

       if (!CryptGenRandom(provider,sizeof(buf), buf))

              return -1;

       */

       arc4_addrandom(buf, sizeof(buf));

       memset(buf, 0, sizeof(buf));

       arc4_seeded_ok = 1;

       return 0;

}

#endif

 

3) 重新编译libevent-2.0.15-stable

\libevent-2.0.15-stable>nmake -f Makefile.nmake

 

4) 重新编译pecl-libevent-0.0.4

   编译之前切进目录\libevent-2.0.15-stable> 然后删除libevent.exp libevent.lib, libevent.obj三个文件

执行重新编译的指令

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值