最近,我尝试使用铯本机在我的项目中读取3 3DTiles文件,但有一个令人困惑的问题,一些成员变量未被正确初始化。如下代码所示,Tileset()使用初始化器列表初始化其成员变量,但其中一些变量(如_loadsInProgress、_previousFrameNumber )被初始化为应该是0的随机值。但是,它们中的一些是正确初始化的,比如_url、_options,它在Release和其原始项目中的相同代码中工作得很好。多么奇怪的虫子啊!
Tileset::Tileset(
const TilesetExternals& externals,
const std::string& url,
const TilesetOptions& options)
: _externals(externals),
_asyncSystem(externals.asyncSystem),
_userCredit(
(options.credit && externals.pCreditSystem)
? std::optional<Credit>(externals.pCreditSystem->createCredit(
options.credit.value(),
options.showCreditsOnScreen))
: std::nullopt),
_url(url),
_isRefreshingIonToken(false),
_options(options),
_pRootTile(),
_previousFrameNumber(0),
_loadsInProgress(0),
_subtreeLoadsInProgress(0),
_overlays(*this),
_tileDataBytes(0),
_supportsRasterOverlays(false),
_gltfUpAxis(CesiumGeometry::Axis::Y),
_distancesStack(),
_nextDistancesVector(0) {
if (!url.empty()) {
CESIUM_TRACE_USE_TRACK_SET(this->_loadingSlots);
this->notifyTileStartLoading(nullptr);
LoadTilesetDotJson::start(*this, url).thenInMainThread([this]() {
this->notifyTileDoneLoading(nullptr);
});
}
}通过调试,我发现_loadsInProgress最初是0,当调用向量构造函数时,它会发生变化。也许是因为生成了调试静态库?
如有任何建议,将不胜感激!
发布于 2022-04-28 06:32:13
通过仔细检查所有设置,正确运行原项目和我的项目,解决了问题。并且尝试清理并重新构建项目和库可能有助于解决这个问题。
首先,我对include和lib文件使用了不同的库版本,然后我发现,我将同一个版本库包含的文件更改为我的项目。但是由于VS缓存和相同的文件名(我猜),更改实际上没有适用于我的项目。
https://stackoverflow.com/questions/71969416
复制相似问题