CKMeansInputDlg dlg;
if (dlg.DoModal()==IDOK)
{
//只有参数有效的时候才计算K均值
if (dlg.m_KMParameters.IsValid)
{
DatasetKM=dlg.DatasetSel;
ParaKM=dlg.m_KMParameters;
if (CreateThread(NULL,0,KMeansThreadFunc,NULL,0,&threadID))
{
Sleep(200); }
}
}
当程序运行到SLeep()语句时出现如下提示:
Debug Assertion Failed!
program:................
File: wincore.cpp
Line: 958 。
其中线程KMeansThreadFunc中用到的函数被我放在自己创建的DLL文件里.
求各位大牛帮忙分析
if (dlg.DoModal()==IDOK)
{
//只有参数有效的时候才计算K均值
if (dlg.m_KMParameters.IsValid)
{
DatasetKM=dlg.DatasetSel;
ParaKM=dlg.m_KMParameters;
if (CreateThread(NULL,0,KMeansThreadFunc,NULL,0,&threadID))
{
Sleep(200); }
}
}
当程序运行到SLeep()语句时出现如下提示:
Debug Assertion Failed!
program:................
File: wincore.cpp
Line: 958 。
其中线程KMeansThreadFunc中用到的函数被我放在自己创建的DLL文件里.
求各位大牛帮忙分析
怎么调试呢 我对call stack窗口不怎么会 谢了
{
Sleep(200); }
把这个代码拉开来看,改成
HANDLE hThread( NULL );
hThread = CreateThread(NULL,0,KMeansThreadFunc,NULL,0,&threadID);if( NULL != hThread )
{
Sleep( 200 );
}
看是不是CreateThread时出错了。
{
KMeans *km=new KMeans;
km->BASetDataset(DatasetKM);
km->BAGetImageInfo();
km->BA_ROI.xoffset=0;
km->BA_ROI.yoffset=0;
km->BA_ROI.width=km->width;
km->BA_ROI.height=km->height;
km->BA_COI.num=km->bandCounts;
km->BA_COI.bandindex=NULL;
km->BASetBlkSize(128, 128);
km->BAGetBlockInfo();
km->MaxPixelROI=new double[km->bandCounts];
km->MinPixelROI=new double[km->bandCounts];
km->AverageROI=new double[km->bandCounts];
km->StdDevROI=new double[km->bandCounts];
km->BAComputeROIStatisticsInfo();
km->KMSetInitParameter(ParaKM.TypeNum,ParaKM.Iteration,ParaKM.Threshold);
km->KMSetOutFileName((char*)(LPCTSTR)ParaKM.filename);
km->KMComputeInitCenter();
km->KMRunKMeans();
CMainFrame *pMain=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CHIPSView *pView=(CHIPSView*)pMain->GetActiveView();
pView->OpenfileByName((char*)(LPCTSTR)ParaKM.filename);
return 0;
}[帮忙分析下,我找了几天的原因了还是没头绪Quote=引用 8 楼 eyey1 的回复:]哦?KMeansThreadFunc贴出来看看?
[/Quote]
通过发送消息,由ui消息处理函数里面处理
忘各位路过的大牛不吝赐教,各抒己见吧
那就用你的DLL工程调试啊
AfxGetApp在线程里有问题。
CWinApp* pApp = AfxGetApp();
if(pApp = NULL)
{
//
}CMainFrame *pMain= pApp->m_pMainWnd;if(pMain == NULL)
{
//...
}
...