很奇怪的问题,在XE7的DLL工程里面,用idhttp,get方法返回数据太多的话,会崩溃。
extern "C" __declspec(dllexport) char * __stdcall test(char *url) //导出函数
{
TIdSSLIOHandlerSocketOpenSSL *IdSSLIOHandlerSocketOpenSSL1=new TIdSSLIOHandlerSocketOpenSSL(NULL);
TIdHTTP *http=new TIdHTTP(NULL);
http->IOHandler=IdSSLIOHandlerSocketOpenSSL1;
IdSSLIOHandlerSocketOpenSSL1->SSLOptions->Method= sslvSSLv2;
IdSSLIOHandlerSocketOpenSSL1->SSLOptions->Mode=sslmBoth;
IdSSLIOHandlerSocketOpenSSL1->ReadTimeout=10000;
http->ReadTimeout=10000;
AnsiString html;
try {
html=http->Get(url); // 执行到这里的时候,如果返回的数据不是很多的话,没有问题。如果返回的数据很多,会崩溃,貌似连catch都捕获不了,然后跳出来个内存错误,我是用xe7写的DLL。BCB6调用。
return html.c_str();
} catch ( Exception &e) {
return html.c_str() ;
}
}