首页 / 浏览问题 / 组件GIS / 问题详情
vs上supermap组件,中断异常,点击继续也还会弹出来
13EXP 2020年09月04日

使用产品:SMO_CPP_801_13228_53527_Win

操作系统:win7 x64
数据类型: 不知
问题详细描述:中断弹出的窗口显示信息:

0x0000000004DEDFA9 (SuMapd.dll)处(位于 Positioning_Gui_Application.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突。

如有适用于此异常的处理程序,该程序便可安全地继续运行。

点击继续,还是会弹出该窗口,信息也是一样,卡在这里了,点击中断,显示以下代码处:

void Positioning_Gui_Application::importBSLocation(std::vector<ENodeB> BSlist)
{
	UGDatasetVectorInfo condt1;
	condt1.m_nType = UGDataset::DatasetType::Point;
	condt1.m_nOptions = UGDataset::DatasetOption::Default;
	condt1.m_strName = _U("sector");
	UGDatasetVector* BsDataset = DataSource->CreateDatasetVector(condt1);
	condt1.m_strName = _U("UE");
	UGDatasetVector* UEDataset = DataSource->CreateDatasetVector(condt1);
	UGThemeLabel* pThemeLable = new UGThemeLabel;
	UGLayer* BsLayer = qMapControl->GetMap()->m_Layers.AddDataset(BsDataset, true, 
    UGLayer::UG_Layer_Normal, _U("siteLayer"));//显示这是要执行的下一句
	UGLayer* UELayer = qMapControl->GetMap()->m_Layers.AddDataset(UEDataset, true, 
    UGLayer::UG_Layer_Normal, _U("pointLayer"));
	UGGeoPoint* geopoint = new UGGeoPoint;
	UGStyle* BsStyle = new UGStyle;
	UGStyle* UEStyle = new UGStyle;
	UGStyle* MapStyle = new UGStyle;

1个回答

点击继续能够正常继续运行吗
4,620EXP 2020年09月07日
不能,点击继续还是弹出这个异常中断
如果你将这段执行代码注释掉能够正常运行吗
发现如果在当前数据源下面已经存在同名数据集,就会触发这个报错,你在创建数据集之前先检查一下是否已经存在这两个命名的数据集,看存在的情况下是做另命名处理,还是将之前的数据集删除。
注释掉这个函数就能运行。

“当前数据源下面已经存在同名数据集”这句是啥意思?
你这段代码的含义就是在数据源下面去新建了两个数据集,然后将这两个数据集添加到地图中。意思就是你当前这个数据源下面已经存在“sector”和“UE”命名的数据集了,所以会导致报错,数据源下面的数据集名称都是唯一标识的,不能存在同名数据集
请问,怎么查已有数据集名呢?

我在代码里找,没有别的地方再用这两个名了,而且我直接在sector和UE后面加个“1”,还是同样中断不能运行。

这个问题解决了:

DataSource = UGDataSourceManager::CreateDataSource(UGEngineType::UDB);
UGDsConnection &con = DataSource->GetConnectionInfo();
con.m_strAlias = _U("mapout");
con.m_nType = UGEngineType::UDB;
con.m_strServer = Translator::QStr2UGStr("C:\\tempGis\\LTE\\mapout.udb");
DataSource->Create();

将创建数据源时,这里的路径下的之前的mapout.udb和mapout.udd两个文件删掉,再次运行,就成功显示出地图了。

...