System::SharedPtr project = System::MakeObject(dataDir + u"ExtractEmbeddedObjects.mpp"); System::SharedPtr ole = project->get_OleObjects()->ToList()->idx_get(0); // We have to check this property because it can be null if the embedded object was created inside the ms project application Or, alternatively, you can use this check: if (ole.FileFormat == "Package") if (!System::String::IsNullOrEmpty(ole->get_FullPath())) { { System::SharedPtr fileStream = System::MakeObject(dataDir, System::IO::FileMode::Create); // Clearing resources under 'using' statement System::Details::DisposeGuard<1> __dispose_guard_0({ fileStream}); // ------------------------------------------ try { fileStream->Write(ole->get_Content(), 0, ole->get_Content()->get_Length()); } catch(...) { __dispose_guard_0.SetCurrentException(std::current_exception()); } } }