4 Stimmen

Problem beim Erstellen eines zirkulären Puffers im gemeinsam genutzten Speicher mit Boost

Ich versuche, einen kreisförmigen Puffer im gemeinsamen Speicher unter Verwendung von Boost circular_buffer und Interprocess-Bibliotheken zu erstellen. Ich habe das Beispiel in der Interprocess-Dokumentation für die Erstellung eines Vektors im gemeinsamen Speicher kompiliert und ausgeführt, ohne Probleme zu haben. Wenn ich es jedoch ändere, um den Boost circular_buffer zu verwenden wie folgt:

int main(int argc, char *argv[])
{
    managed_shared_memory segment(create_only, "MySharedMemory", 65536);
    const ShmemAllocator alloc_inst (segment.get_segment_manager());
    MyCircBuffer  *myCircBuf  = segment.construct("MyCircBuffer")(alloc_inst);
    return 0;
} 

Bekomme ich einen Kompilierungsfehler (verursacht durch segment.construct()). Irgendwelche Ideen, was ich falsch mache? Liegt es daran, dass circular_buffer nicht in der Liste der Container in /boost/interprocess/containers aufgeführt ist, d.h. es ist nicht kompatibel mit Interprocess?

Vielen Dank,

C

3voto

recipriversexclusion Punkte 10920

Ich habe die gleiche Frage im Boost-Benutzerforum gestellt und die vorgeschlagene Lösung war, die Flags -DBOOST_CB_DISABLE_DEBUG oder -DNDEBUG zu verwenden, da circular_buffer auf Rohzeiger für Debug-Unterstützung angewiesen ist.

Irgendwelche anderen Vorschläge?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X