首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

东软医保接口C++调用时崩溃,调了好几天了求大神帮忙见见

2013-03-21 
东软医保接口C++调用时崩溃,调了好几天了求大神帮忙看看本帖最后由 VisualEleven 于 2013-03-18 09:43:06

东软医保接口C++调用时崩溃,调了好几天了求大神帮忙看看
本帖最后由 VisualEleven 于 2013-03-18 09:43:06 编辑

#include "iostream.h"
#include "windows.h"
void main()
{
HINSTANCE hInst;
char *DataBuffer= new char[1024];
char *procid= new char[1024];
char *indata= new char[1024];
char *outdata= new char[1024];
/*int *AppCode= new int[1024];*/
int AppCode;
hInst = LoadLibrary("SiInterface.dll");
typedef int (WINAPI*InitDLL1)(char *&);
typedef int (WINAPI*EditUserInfo1)(char *,char *,char *&,int &,char *&);
InitDLL1 InitDLL = (InitDLL1)GetProcAddress(hInst,"InitDLL");
EditUserInfo1 EditUserInfo = (EditUserInfo1)GetProcAddress(hInst,"EditUserInfo");
if (InitDLL==NULL)
{
cout<<"获取函数InitDLL地址失败!"<<endl;
return;
}
else
{
cout<<"获取函数InitDLL地址成功!"<<endl;
}
if (EditUserInfo==NULL)
{
cout<<"获取函数EditUserInfo地址失败!"<<endl;
return;
}
else
{
cout<<"获取函数EditUserInfo地址成功!"<<endl;
}
if (!InitDLL(DataBuffer)) 
{
cout<<"动态库初始化成功!"<<endl;
}
else
{
cout<<"动态库初始化失败!"<<endl;
}


procid = "1001";
indata = "1211|dfds|3423|322234|33234|423432|";
//执行到这里都没问题,但执行EditUserInfo时就出现崩溃错误
//文档原型是int (char *procid,char *indata,char *outdata,int *AppCode,char *DataBuffer)
if (!EditUserInfo(procid,indata,outdata,AppCode,DataBuffer)) 
{
cout<<"执行EditUserInfo成功!"<<endl;
}
else
{
cout<<"执行失败!提示信息:<<DataBuffer<<endl;
}
FreeLibrary(hInst);
}

[解决办法]
if (!EditUserInfo(procid,indata,outdata,&AppCode,DataBuffer)) 
[解决办法]
typedef int (WINAPI*EditUserInfo1)(char *,char *,char *&,int &,char *&);
if (!EditUserInfo(procid,indata,outdata,AppCode,DataBuffer)) 

你觉得对应起来了么?  *&有问题啊
&outdata   &DataBuffer
[解决办法]
引用:
char *procid= new char[1024];     
char *indata= new char[1024];
下面你又这样写
procid = "1001";     
indata = "1211
[解决办法]
dfds
[解决办法]
3423
[解决办法]
322234
[解决办法]
33234
[解决办法]
423432
[解决办法]
";

将指向常量区的指针传递给你的接口函数,正确吗?
[解决办法]
procid = "1001";    
indata = "1211
------解决方案--------------------


dfds
[解决办法]
3423
[解决办法]
322234
[解决办法]
33234
[解决办法]
423432
[解决办法]
";
改成这样
strcpy(procid,"1001");
strcpy(indata,"1211
[解决办法]
dfds
[解决办法]
3423
[解决办法]
322234
[解决办法]
33234
[解决办法]
423432
[解决办法]
";);

看来应该是返回函数的内存空间分配的问题?
就算是函数内部分配空间也不会出现崩溃,最多是内存泄露。
[解决办法]
typedef int (WINAPI*EditUserInfo1)(char *,char *,char *&,int &,char *&);

热点排行