传递CRYPTO_set_locking_callback的C ++回调函数时出现以下错误。
Error C2664: 'CRYPTO_set_locking_callback' : cannot convert parameter 1 from
'void (__cdecl *)(int,int,char *,int)' to
'void (__cdecl *)(int,int,const char *,int)'
This conversion requires a reinterpret_cast, a C-style cast or
function-style cast
我的代码如下所示:
CRYPTO_set_locking_callback(&MyFunc::lock_callback);
void MyFunc::lock_callback(int mode, int type, char *file, int line)
{
(void)file;
(void)line;
if (mode & CRYPTO_LOCK)
{
pthread_mutex_lock(&(lockarray[type]));
}
else
{
pthread_mutex_unlock(&(lockarray[type]));
}
}
我尝试重新解释演员而没有运气,也不确定这样做的正确方法是什么。任何帮助表示赞赏。
答案 0 :(得分:2)
根据错误消息,您的函数的第三个参数应该是const char*
:
void MyFunc::lock_callback(int mode, int type, const char* file, int line)
这应该不是问题,因为你甚至没有使用它。
您也可以在the documentation中看到这一点:
void CRYPTO_lock(int mode, int n, const char *file, int line);
答案 1 :(得分:0)
将其更改为:
void MyFunc::lock_callback(int mode, int type, const char *file, int line){}