在MFC界面中调用OpenSSL大整数函数出现acess,该如何解决
在MFC界面中调用OpenSSL大整数函数出现acess
我的代码如下,本人刚接触MFC不是很熟悉,想做一个大整数计算器,程序中调用的是OpenSSL的大整数函数,希望大神帮忙解释一下到底是哪里出了问题。。。
[size=16px]void CPracticeDlg::On_plus_Button1()
{
// TODO: Add your control notification handler code here
CString str1;
CString str2,str3;
unsigned char *p1,*p2;
BIGNUM *new1;BN_init(new1);
BIGNUM *new2;BN_init(new2);
BIGNUM *re;BN_init(re);
GetDlgItemText(IDC_EDIT1,str1);
GetDlgItemText(IDC_EDIT2,str2);
p1=(unsigned char*)str1.GetBuffer(str1.GetLength()); //(unsigned char*)str.GetBuffer(str.GetLength());
p2=(unsigned char*)str2.GetBuffer(str2.GetLength()); //转换成usigned char指针型
str1.ReleaseBuffer();
str2.ReleaseBuffer();
*BN_bin2bn(p1,1024,new1);
*BN_bin2bn(p2,1024,new2);
BN_add(re,new1,new2); //将两个数相加
BN_bn2bin(re,p1);
str3.Format("%d",*p1);
SetDlgItemText(IDC_EDIT3,str3);
UpdateData(FALSE);
}[/size]
出现错误
------解决思路----------------------
我看了下openssl的头文件,BN_init是这样声明的:void BN_init(BIGNUM *);所以传指针进去肯定是错的。要么用这个函数试试:BIGNUM *BN_new(void);
------解决思路----------------------
应该要先看一些资料再编程,如果你连函数的接口,做什么用的也没有搞清楚。你怎么能用它呢?
如果你不确定函数的原型,可以用ctrl+shift+f的快捷键进行全局搜索,这样就可以找到这个函数所在的头文件,这样就可以看到它的定义了。
------解决思路----------------------
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
我的代码如下,本人刚接触MFC不是很熟悉,想做一个大整数计算器,程序中调用的是OpenSSL的大整数函数,希望大神帮忙解释一下到底是哪里出了问题。。。
[size=16px]void CPracticeDlg::On_plus_Button1()
{
// TODO: Add your control notification handler code here
CString str1;
CString str2,str3;
unsigned char *p1,*p2;
BIGNUM *new1;BN_init(new1);
BIGNUM *new2;BN_init(new2);
BIGNUM *re;BN_init(re);
GetDlgItemText(IDC_EDIT1,str1);
GetDlgItemText(IDC_EDIT2,str2);
p1=(unsigned char*)str1.GetBuffer(str1.GetLength()); //(unsigned char*)str.GetBuffer(str.GetLength());
p2=(unsigned char*)str2.GetBuffer(str2.GetLength()); //转换成usigned char指针型
str1.ReleaseBuffer();
str2.ReleaseBuffer();
*BN_bin2bn(p1,1024,new1);
*BN_bin2bn(p2,1024,new2);
BN_add(re,new1,new2); //将两个数相加
BN_bn2bin(re,p1);
str3.Format("%d",*p1);
SetDlgItemText(IDC_EDIT3,str3);
UpdateData(FALSE);
}[/size]
出现错误
------解决思路----------------------
我看了下openssl的头文件,BN_init是这样声明的:void BN_init(BIGNUM *);所以传指针进去肯定是错的。要么用这个函数试试:BIGNUM *BN_new(void);
------解决思路----------------------
应该要先看一些资料再编程,如果你连函数的接口,做什么用的也没有搞清楚。你怎么能用它呢?
如果你不确定函数的原型,可以用ctrl+shift+f的快捷键进行全局搜索,这样就可以找到这个函数所在的头文件,这样就可以看到它的定义了。
------解决思路----------------------
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。