Index: /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/ReservedRecords.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/ReservedRecords.cpp (revision 7748)
+++ /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/ReservedRecords.cpp (revision 10283)
@@ -23,14 +23,15 @@
 
 // Prevent "unknown record" message for the following reserved records:
-RegisterRecordProxy<DummyRecord> g_Reserved_103(103);
-RegisterRecordProxy<DummyRecord> g_Reserved_104(104);
-RegisterRecordProxy<DummyRecord> g_Reserved_117(117);
-RegisterRecordProxy<DummyRecord> g_Reserved_118(118);
-RegisterRecordProxy<DummyRecord> g_Reserved_120(120);
-RegisterRecordProxy<DummyRecord> g_Reserved_121(121);
-RegisterRecordProxy<DummyRecord> g_Reserved_124(124);
-RegisterRecordProxy<DummyRecord> g_Reserved_125(125);
+REGISTER_FLTRECORD(DummyRecord, 103)
+REGISTER_FLTRECORD(DummyRecord, 104)
+REGISTER_FLTRECORD(DummyRecord, 117)
+REGISTER_FLTRECORD(DummyRecord, 118)
+REGISTER_FLTRECORD(DummyRecord, 120)
+REGISTER_FLTRECORD(DummyRecord, 121)
+REGISTER_FLTRECORD(DummyRecord, 124)
+REGISTER_FLTRECORD(DummyRecord, 125)
 
 
 
 
+
Index: /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/ControlRecords.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/ControlRecords.cpp (revision 7859)
+++ /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/ControlRecords.cpp (revision 10283)
@@ -49,5 +49,6 @@
 };
 
-RegisterRecordProxy<PushLevel> g_PushLevel(PUSH_LEVEL_OP);
+REGISTER_FLTRECORD(PushLevel, PUSH_LEVEL_OP)
+
 
 
@@ -87,5 +88,6 @@
 };
 
-RegisterRecordProxy<PopLevel> g_PopLevel(POP_LEVEL_OP);
+REGISTER_FLTRECORD(PopLevel, POP_LEVEL_OP)
+
 
 
@@ -110,5 +112,6 @@
 };
 
-RegisterRecordProxy<PushSubface> g_PushSubface(PUSH_SUBFACE_OP);
+REGISTER_FLTRECORD(PushSubface, PUSH_SUBFACE_OP)
+
 
 
@@ -133,5 +136,6 @@
 };
 
-RegisterRecordProxy<PopSubface> g_PopSubface(POP_SUBFACE_OP);
+REGISTER_FLTRECORD(PopSubface, POP_SUBFACE_OP)
+
 
 
@@ -157,5 +161,6 @@
 };
 
-RegisterRecordProxy<PushExtension> g_PushExtension(PUSH_EXTENSION_OP);
+REGISTER_FLTRECORD(PushExtension, PUSH_EXTENSION_OP)
+
 
 
@@ -181,5 +186,6 @@
 };
 
-RegisterRecordProxy<PopExtension> g_PopExtension(POP_EXTENSION_OP);
+REGISTER_FLTRECORD(PopExtension, POP_EXTENSION_OP)
+
 
 
@@ -204,5 +210,6 @@
 };
 
-RegisterRecordProxy<PushAttribute> g_PushAttribute(PUSH_ATTRIBUTE_OP);
+REGISTER_FLTRECORD(PushAttribute, PUSH_ATTRIBUTE_OP)
+
 
 
@@ -227,5 +234,6 @@
 };
 
-RegisterRecordProxy<PopAttribute> g_PopAttribute(POP_ATTRIBUTE_OP);
+REGISTER_FLTRECORD(PopAttribute, POP_ATTRIBUTE_OP)
+
 
 
Index: /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/LightPointRecords.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/LightPointRecords.cpp (revision 9382)
+++ /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/LightPointRecords.cpp (revision 10283)
@@ -235,5 +235,6 @@
 };
 
-RegisterRecordProxy<LightPoint> g_LightPoint(LIGHT_POINT_OP);
+REGISTER_FLTRECORD(LightPoint, LIGHT_POINT_OP)
+
 
 
@@ -417,5 +418,6 @@
 };
 
-RegisterRecordProxy<IndexedLightPoint> g_IndexedLightPoint(INDEXED_LIGHT_POINT_OP);
+REGISTER_FLTRECORD(IndexedLightPoint, INDEXED_LIGHT_POINT_OP)
+
 
 
@@ -509,4 +511,5 @@
 };
 
-RegisterRecordProxy<LightPointSystem> g_LightPointSystem(LIGHT_POINT_SYSTEM_OP);
-
+REGISTER_FLTRECORD(LightPointSystem, LIGHT_POINT_SYSTEM_OP)
+
+
Index: /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/ReaderWriterFLT.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/ReaderWriterFLT.cpp (revision 9890)
+++ /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/ReaderWriterFLT.cpp (revision 10283)
@@ -40,4 +40,108 @@
 using namespace osg;
 using namespace osgDB;
+
+// pull in symbols from attr plugin
+USE_OSGPLUGIN(attr)
+
+// pull in symbols from individual .o's to enable the static build to work
+// note, following USE_FLTRECORD list was generated by running:
+// grep REGISTER_FLTRECORD * -h | grep -v "#define" | sed 's/REGISTER_FLTRECORD/USE_FLTRECORD/g'
+USE_FLTRECORD(Comment, COMMENT_OP)
+USE_FLTRECORD(LongID, LONG_ID_OP)
+USE_FLTRECORD(Matrix, MATRIX_OP)
+USE_FLTRECORD(Multitexture, MULTITEXTURE_OP)
+USE_FLTRECORD(UVList, UV_LIST_OP)
+USE_FLTRECORD(Replicate, REPLICATE_OP)
+USE_FLTRECORD(DummyRecord, OLD_TRANSLATE2_OP)
+USE_FLTRECORD(DummyRecord, OLD_ROTATE_ABOUT_POINT_OP)
+USE_FLTRECORD(DummyRecord, OLD_ROTATE_ABOUT_EDGE_OP)
+USE_FLTRECORD(DummyRecord, OLD_SCALE_OP)
+USE_FLTRECORD(DummyRecord, OLD_TRANSLATE_OP)
+USE_FLTRECORD(DummyRecord, OLD_NONUNIFORM_SCALE_OP)
+USE_FLTRECORD(DummyRecord, OLD_ROTATE_ABOUT_POINT2_OP)
+USE_FLTRECORD(DummyRecord, OLD_ROTATE_SCALE_TO_POINT_OP)
+USE_FLTRECORD(DummyRecord, OLD_PUT_TRANSFORM_OP)
+USE_FLTRECORD(DummyRecord, OLD_BOUNDING_BOX_OP)
+USE_FLTRECORD(DummyRecord, INDEXED_STRING_OP)
+USE_FLTRECORD(DummyRecord, ROAD_ZONE_OP)
+USE_FLTRECORD(DummyRecord, ROTATE_ABOUT_EDGE_OP)
+USE_FLTRECORD(DummyRecord, TRANSLATE_OP)
+USE_FLTRECORD(DummyRecord, NONUNIFORM_SCALE_OP)
+USE_FLTRECORD(DummyRecord, ROTATE_ABOUT_POINT_OP)
+USE_FLTRECORD(DummyRecord, ROTATE_SCALE_TO_POINT_OP)
+USE_FLTRECORD(DummyRecord, PUT_TRANSFORM_OP)
+USE_FLTRECORD(DummyRecord, GENERAL_MATRIX_OP)
+USE_FLTRECORD(DummyRecord, VECTOR_OP)
+USE_FLTRECORD(DummyRecord, BOUNDING_BOX_OP)
+USE_FLTRECORD(DummyRecord, BOUNDING_SPHERE_OP)
+USE_FLTRECORD(DummyRecord, BOUNDING_CYLINDER_OP)
+USE_FLTRECORD(DummyRecord, BOUNDING_CONVEX_HULL_OP)
+USE_FLTRECORD(DummyRecord, BOUNDING_HISTOGRAM)
+USE_FLTRECORD(DummyRecord, BOUNDING_VOLUME_CENTER_OP)
+USE_FLTRECORD(DummyRecord, BOUNDING_VOLUME_ORIENTATION_OP)
+USE_FLTRECORD(DummyRecord, HISTOGRAM_BOUNDING_VOLUME_OP)
+USE_FLTRECORD(PushLevel, PUSH_LEVEL_OP)
+USE_FLTRECORD(PopLevel, POP_LEVEL_OP)
+USE_FLTRECORD(PushSubface, PUSH_SUBFACE_OP)
+USE_FLTRECORD(PopSubface, POP_SUBFACE_OP)
+USE_FLTRECORD(PushExtension, PUSH_EXTENSION_OP)
+USE_FLTRECORD(PopExtension, POP_EXTENSION_OP)
+USE_FLTRECORD(PushAttribute, PUSH_ATTRIBUTE_OP)
+USE_FLTRECORD(PopAttribute, POP_ATTRIBUTE_OP)
+USE_FLTRECORD(Face, FACE_OP)
+USE_FLTRECORD(VertexListRecord, VERTEX_LIST_OP)
+USE_FLTRECORD(MorphVertexList, MORPH_VERTEX_LIST_OP)
+USE_FLTRECORD(Mesh, MESH_OP)
+USE_FLTRECORD(LocalVertexPool, LOCAL_VERTEX_POOL_OP)
+USE_FLTRECORD(MeshPrimitive, MESH_PRIMITIVE_OP)
+USE_FLTRECORD(LightPoint, LIGHT_POINT_OP)
+USE_FLTRECORD(IndexedLightPoint, INDEXED_LIGHT_POINT_OP)
+USE_FLTRECORD(LightPointSystem, LIGHT_POINT_SYSTEM_OP)
+USE_FLTRECORD(VertexPalette, VERTEX_PALETTE_OP)
+USE_FLTRECORD(ColorPalette, COLOR_PALETTE_OP)
+USE_FLTRECORD(NameTable, NAME_TABLE_OP)
+USE_FLTRECORD(MaterialPalette, MATERIAL_PALETTE_OP)
+USE_FLTRECORD(OldMaterialPalette, OLD_MATERIAL_PALETTE_OP)
+USE_FLTRECORD(TexturePalette, TEXTURE_PALETTE_OP)
+USE_FLTRECORD(EyepointAndTrackplanePalette, EYEPOINT_AND_TRACKPLANE_PALETTE_OP)
+USE_FLTRECORD(LinkagePalette, LINKAGE_PALETTE_OP)
+USE_FLTRECORD(SoundPalette, SOUND_PALETTE_OP)
+USE_FLTRECORD(LightSourcePalette, LIGHT_SOURCE_PALETTE_OP)
+USE_FLTRECORD(LightPointAppearancePalette, LIGHT_POINT_APPEARANCE_PALETTE_OP)
+USE_FLTRECORD(LightPointAnimationPalette, LIGHT_POINT_ANIMATION_PALETTE_OP)
+USE_FLTRECORD(LineStylePalette, LINE_STYLE_PALETTE_OP)
+USE_FLTRECORD(TextureMappingPalette, TEXTURE_MAPPING_PALETTE_OP)
+USE_FLTRECORD(ShaderPalette, SHADER_PALETTE_OP)
+USE_FLTRECORD(Header, HEADER_OP)
+USE_FLTRECORD(Group, GROUP_OP)
+USE_FLTRECORD(DegreeOfFreedom, DOF_OP)
+USE_FLTRECORD(LevelOfDetail, LOD_OP)
+USE_FLTRECORD(OldLevelOfDetail, OLD_LOD_OP)
+USE_FLTRECORD(Switch, SWITCH_OP)
+USE_FLTRECORD(ExternalReference, EXTERNAL_REFERENCE_OP)
+USE_FLTRECORD(InstanceDefinition, INSTANCE_DEFINITION_OP)
+USE_FLTRECORD(InstanceReference, INSTANCE_REFERENCE_OP)
+USE_FLTRECORD(Extension, EXTENSION_OP)
+USE_FLTRECORD(Object, OBJECT_OP)
+USE_FLTRECORD(LightSource, LIGHT_SOURCE_OP)
+USE_FLTRECORD(DummyRecord, 103)
+USE_FLTRECORD(DummyRecord, 104)
+USE_FLTRECORD(DummyRecord, 117)
+USE_FLTRECORD(DummyRecord, 118)
+USE_FLTRECORD(DummyRecord, 120)
+USE_FLTRECORD(DummyRecord, 121)
+USE_FLTRECORD(DummyRecord, 124)
+USE_FLTRECORD(DummyRecord, 125)
+USE_FLTRECORD(RoadSegment, ROAD_SEGMENT_OP)
+USE_FLTRECORD(RoadConstruction, ROAD_CONSTRUCTION_OP)
+USE_FLTRECORD(RoadPath, ROAD_PATH_OP)
+USE_FLTRECORD(VertexC, VERTEX_C_OP)
+USE_FLTRECORD(VertexCN, VERTEX_CN_OP)
+USE_FLTRECORD(VertexCT, VERTEX_CT_OP)
+USE_FLTRECORD(VertexCNT, VERTEX_CNT_OP)
+USE_FLTRECORD(AbsoluteVertex, OLD_ABSOLUTE_VERTEX_OP)
+USE_FLTRECORD(ShadedVertex, OLD_SHADED_VERTEX_OP)
+USE_FLTRECORD(NormalVertex, OLD_NORMAL_VERTEX_OP)
+
 
 
Index: /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/PrimaryRecords.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/PrimaryRecords.cpp (revision 9573)
+++ /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/PrimaryRecords.cpp (revision 10283)
@@ -154,5 +154,5 @@
 };
 
-RegisterRecordProxy<Header> g_Header(HEADER_OP);
+REGISTER_FLTRECORD(Header, HEADER_OP)
 
 
@@ -293,5 +293,6 @@
 };
 
-RegisterRecordProxy<Group> g_Group(GROUP_OP);
+REGISTER_FLTRECORD(Group, GROUP_OP)
+
 
 
@@ -458,5 +459,6 @@
 };
 
-RegisterRecordProxy<DegreeOfFreedom> g_DegreeOfFreedom(DOF_OP);
+REGISTER_FLTRECORD(DegreeOfFreedom, DOF_OP)
+
 
 
@@ -514,5 +516,6 @@
 };
 
-RegisterRecordProxy<LevelOfDetail> g_LevelOfDetail(LOD_OP);
+REGISTER_FLTRECORD(LevelOfDetail, LOD_OP)
+
 
 
@@ -570,5 +573,6 @@
 };
 
-RegisterRecordProxy<OldLevelOfDetail> g_OldLevelOfDetail(OLD_LOD_OP);
+REGISTER_FLTRECORD(OldLevelOfDetail, OLD_LOD_OP)
+
 
 
@@ -646,5 +650,6 @@
 };
 
-RegisterRecordProxy<Switch> g_Switch(SWITCH_OP);
+REGISTER_FLTRECORD(Switch, SWITCH_OP)
+
 
 
@@ -730,5 +735,6 @@
 };
 
-RegisterRecordProxy<ExternalReference> g_ExternalReference(EXTERNAL_REFERENCE_OP);
+REGISTER_FLTRECORD(ExternalReference, EXTERNAL_REFERENCE_OP)
+
 
 
@@ -779,5 +785,6 @@
 };
 
-RegisterRecordProxy<InstanceDefinition> g_InstanceDefinition(INSTANCE_DEFINITION_OP);
+REGISTER_FLTRECORD(InstanceDefinition, INSTANCE_DEFINITION_OP)
+
 
 
@@ -810,5 +817,6 @@
 };
 
-RegisterRecordProxy<InstanceReference> g_InstanceReference(INSTANCE_REFERENCE_OP);
+REGISTER_FLTRECORD(InstanceReference, INSTANCE_REFERENCE_OP)
+
 
 
@@ -849,5 +857,6 @@
 };
 
-RegisterRecordProxy<Extension> g_Extension(EXTENSION_OP);
+REGISTER_FLTRECORD(Extension, EXTENSION_OP)
+
 
 
@@ -953,5 +962,6 @@
 };
 
-RegisterRecordProxy<Object> g_Object(OBJECT_OP);
+REGISTER_FLTRECORD(Object, OBJECT_OP)
+
 
 
@@ -1036,5 +1046,6 @@
 };
 
-RegisterRecordProxy<LightSource> g_LightSource(LIGHT_SOURCE_OP);
+REGISTER_FLTRECORD(LightSource, LIGHT_SOURCE_OP)
+
 
 
Index: /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/VertexRecords.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/VertexRecords.cpp (revision 8563)
+++ /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/VertexRecords.cpp (revision 10283)
@@ -77,5 +77,6 @@
 };
 
-RegisterRecordProxy<VertexC> g_VertexC(VERTEX_C_OP);
+REGISTER_FLTRECORD(VertexC, VERTEX_C_OP)
+
 
 
@@ -116,5 +117,6 @@
 };
 
-RegisterRecordProxy<VertexCN> g_VertexCN(VERTEX_CN_OP);
+REGISTER_FLTRECORD(VertexCN, VERTEX_CN_OP)
+
 
 
@@ -155,5 +157,6 @@
 };
 
-RegisterRecordProxy<VertexCT> g_VertexCT(VERTEX_CT_OP);
+REGISTER_FLTRECORD(VertexCT, VERTEX_CT_OP)
+
 
 
@@ -212,5 +215,6 @@
 };
 
-RegisterRecordProxy<VertexCNT> g_VertexCNT(VERTEX_CNT_OP);
+REGISTER_FLTRECORD(VertexCNT, VERTEX_CNT_OP)
+
 
 
@@ -253,5 +257,6 @@
 };
 
-RegisterRecordProxy<AbsoluteVertex> g_AbsoluteVertex(OLD_ABSOLUTE_VERTEX_OP);
+REGISTER_FLTRECORD(AbsoluteVertex, OLD_ABSOLUTE_VERTEX_OP)
+
 
 
@@ -301,5 +306,6 @@
 };
 
-RegisterRecordProxy<ShadedVertex> g_ShadedVertex(OLD_SHADED_VERTEX_OP);
+REGISTER_FLTRECORD(ShadedVertex, OLD_SHADED_VERTEX_OP)
+
 
 
@@ -349,5 +355,6 @@
 };
 
-RegisterRecordProxy<NormalVertex> g_NormalVertex(OLD_NORMAL_VERTEX_OP);
+REGISTER_FLTRECORD(NormalVertex, OLD_NORMAL_VERTEX_OP)
+
 
 } // end namespace
Index: /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/AncillaryRecords.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/AncillaryRecords.cpp (revision 9067)
+++ /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/AncillaryRecords.cpp (revision 10283)
@@ -85,5 +85,6 @@
 };
 
-RegisterRecordProxy<Comment>    g_Comment(COMMENT_OP);
+REGISTER_FLTRECORD(Comment, COMMENT_OP)
+
 
 
@@ -112,5 +113,6 @@
 };
 
-RegisterRecordProxy<LongID> g_LongID(LONG_ID_OP);
+REGISTER_FLTRECORD(LongID, LONG_ID_OP)
+
 
 
@@ -151,5 +153,6 @@
 };
 
-RegisterRecordProxy<Matrix> g_Matrix(MATRIX_OP);
+REGISTER_FLTRECORD(Matrix, MATRIX_OP)
+
 
 
@@ -229,5 +232,6 @@
 };
 
-RegisterRecordProxy<Multitexture> g_Multitexture(MULTITEXTURE_OP);
+REGISTER_FLTRECORD(Multitexture, MULTITEXTURE_OP)
+
 
 
@@ -285,5 +289,5 @@
 };
 
-RegisterRecordProxy<UVList> g_UVList(UV_LIST_OP);
+REGISTER_FLTRECORD(UVList, UV_LIST_OP)
 
 
@@ -311,36 +315,36 @@
 };
 
-RegisterRecordProxy<Replicate> g_Replicate(REPLICATE_OP);
-
+REGISTER_FLTRECORD(Replicate, REPLICATE_OP)
 
 // Prevent "unknown record" message for the following ancillary records:
-RegisterRecordProxy<DummyRecord> g_OldTranslate(OLD_TRANSLATE2_OP);
-RegisterRecordProxy<DummyRecord> g_OldRotateAboutPoint(OLD_ROTATE_ABOUT_POINT_OP);
-RegisterRecordProxy<DummyRecord> g_OldRotateAboutEdge(OLD_ROTATE_ABOUT_EDGE_OP);
-RegisterRecordProxy<DummyRecord> g_OldScale(OLD_SCALE_OP);
-RegisterRecordProxy<DummyRecord> g_OldTranslate2(OLD_TRANSLATE_OP);
-RegisterRecordProxy<DummyRecord> g_OldNonuniformScale(OLD_NONUNIFORM_SCALE_OP);
-RegisterRecordProxy<DummyRecord> g_OldRotateAboutPoint2(OLD_ROTATE_ABOUT_POINT2_OP);
-RegisterRecordProxy<DummyRecord> g_OldRotateScaleToPoint(OLD_ROTATE_SCALE_TO_POINT_OP);
-RegisterRecordProxy<DummyRecord> g_OldPutTransform(OLD_PUT_TRANSFORM_OP);
-RegisterRecordProxy<DummyRecord> g_OldBoundingBox(OLD_BOUNDING_BOX_OP);
-RegisterRecordProxy<DummyRecord> g_IndexedString(INDEXED_STRING_OP);
-RegisterRecordProxy<DummyRecord> g_RoadZone(ROAD_ZONE_OP);
-RegisterRecordProxy<DummyRecord> g_RotateAboutEdge(ROTATE_ABOUT_EDGE_OP);
-RegisterRecordProxy<DummyRecord> g_Translate(TRANSLATE_OP);
-RegisterRecordProxy<DummyRecord> g_Scale(NONUNIFORM_SCALE_OP);
-RegisterRecordProxy<DummyRecord> g_RotateAboutPoint(ROTATE_ABOUT_POINT_OP);
-RegisterRecordProxy<DummyRecord> g_RotateScaleToPoint(ROTATE_SCALE_TO_POINT_OP);
-RegisterRecordProxy<DummyRecord> g_PutTransform(PUT_TRANSFORM_OP);
-RegisterRecordProxy<DummyRecord> g_GeneralMatrix(GENERAL_MATRIX_OP);
-RegisterRecordProxy<DummyRecord> g_Vector(VECTOR_OP);
-RegisterRecordProxy<DummyRecord> g_BoundingBox(BOUNDING_BOX_OP);
-RegisterRecordProxy<DummyRecord> g_BoundingSphere(BOUNDING_SPHERE_OP);
-RegisterRecordProxy<DummyRecord> g_BoundingCylinder(BOUNDING_CYLINDER_OP);
-RegisterRecordProxy<DummyRecord> g_BoundingConvexHull(BOUNDING_CONVEX_HULL_OP);
-RegisterRecordProxy<DummyRecord> g_BoundingHistogram(BOUNDING_HISTOGRAM);
-RegisterRecordProxy<DummyRecord> g_BoundingVolumeCenter(BOUNDING_VOLUME_CENTER_OP);
-RegisterRecordProxy<DummyRecord> g_BoundingVolumeOrientation(BOUNDING_VOLUME_ORIENTATION_OP);
-RegisterRecordProxy<DummyRecord> g_HistogramBoundingVolume(HISTOGRAM_BOUNDING_VOLUME_OP);
+REGISTER_FLTRECORD(DummyRecord, OLD_TRANSLATE2_OP)
+REGISTER_FLTRECORD(DummyRecord, OLD_ROTATE_ABOUT_POINT_OP)
+REGISTER_FLTRECORD(DummyRecord, OLD_ROTATE_ABOUT_EDGE_OP)
+REGISTER_FLTRECORD(DummyRecord, OLD_SCALE_OP)
+REGISTER_FLTRECORD(DummyRecord, OLD_TRANSLATE_OP)
+REGISTER_FLTRECORD(DummyRecord, OLD_NONUNIFORM_SCALE_OP)
+REGISTER_FLTRECORD(DummyRecord, OLD_ROTATE_ABOUT_POINT2_OP)
+REGISTER_FLTRECORD(DummyRecord, OLD_ROTATE_SCALE_TO_POINT_OP)
+REGISTER_FLTRECORD(DummyRecord, OLD_PUT_TRANSFORM_OP)
+REGISTER_FLTRECORD(DummyRecord, OLD_BOUNDING_BOX_OP)
+REGISTER_FLTRECORD(DummyRecord, INDEXED_STRING_OP)
+REGISTER_FLTRECORD(DummyRecord, ROAD_ZONE_OP)
+REGISTER_FLTRECORD(DummyRecord, ROTATE_ABOUT_EDGE_OP)
+REGISTER_FLTRECORD(DummyRecord, TRANSLATE_OP)
+REGISTER_FLTRECORD(DummyRecord, NONUNIFORM_SCALE_OP)
+REGISTER_FLTRECORD(DummyRecord, ROTATE_ABOUT_POINT_OP)
+REGISTER_FLTRECORD(DummyRecord, ROTATE_SCALE_TO_POINT_OP)
+REGISTER_FLTRECORD(DummyRecord, PUT_TRANSFORM_OP)
+REGISTER_FLTRECORD(DummyRecord, GENERAL_MATRIX_OP)
+REGISTER_FLTRECORD(DummyRecord, VECTOR_OP)
+REGISTER_FLTRECORD(DummyRecord, BOUNDING_BOX_OP)
+REGISTER_FLTRECORD(DummyRecord, BOUNDING_SPHERE_OP)
+REGISTER_FLTRECORD(DummyRecord, BOUNDING_CYLINDER_OP)
+REGISTER_FLTRECORD(DummyRecord, BOUNDING_CONVEX_HULL_OP)
+REGISTER_FLTRECORD(DummyRecord, BOUNDING_HISTOGRAM)
+REGISTER_FLTRECORD(DummyRecord, BOUNDING_VOLUME_CENTER_OP)
+REGISTER_FLTRECORD(DummyRecord, BOUNDING_VOLUME_ORIENTATION_OP)
+REGISTER_FLTRECORD(DummyRecord, HISTOGRAM_BOUNDING_VOLUME_OP)
+
 
 } // end namespace
Index: /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/RoadRecords.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/RoadRecords.cpp (revision 7756)
+++ /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/RoadRecords.cpp (revision 10283)
@@ -61,5 +61,5 @@
 };
 
-RegisterRecordProxy<RoadSegment> g_RoadSegment(ROAD_SEGMENT_OP);
+REGISTER_FLTRECORD(RoadSegment, ROAD_SEGMENT_OP)
 
 
@@ -99,5 +99,6 @@
 };
 
-RegisterRecordProxy<RoadConstruction> g_RoadConstruction(ROAD_CONSTRUCTION_OP);
+REGISTER_FLTRECORD(RoadConstruction, ROAD_CONSTRUCTION_OP)
+
 
 
@@ -133,5 +134,6 @@
 };
 
-RegisterRecordProxy<RoadPath> g_RoadPath(ROAD_PATH_OP);
+REGISTER_FLTRECORD(RoadPath, ROAD_PATH_OP)
+
 
 
Index: /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/GeometryRecords.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/GeometryRecords.cpp (revision 10084)
+++ /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/GeometryRecords.cpp (revision 10283)
@@ -537,5 +537,6 @@
 };
 
-RegisterRecordProxy<Face> g_Face(FACE_OP);
+REGISTER_FLTRECORD(Face, FACE_OP)
+
 
 
@@ -593,5 +594,6 @@
 
 
-RegisterRecordProxy<VertexListRecord> g_VertexList(VERTEX_LIST_OP);
+REGISTER_FLTRECORD(VertexListRecord, VERTEX_LIST_OP)
+
 
 
@@ -682,5 +684,6 @@
 };
 
-RegisterRecordProxy<MorphVertexList> g_MorphVertexList(MORPH_VERTEX_LIST_OP);
+REGISTER_FLTRECORD(MorphVertexList, MORPH_VERTEX_LIST_OP)
+
 
 
@@ -1017,5 +1020,6 @@
 };
 
-RegisterRecordProxy<Mesh> g_Mesh(MESH_OP);
+REGISTER_FLTRECORD(Mesh, MESH_OP)
+
 
 
@@ -1134,5 +1138,6 @@
 };
 
-RegisterRecordProxy<LocalVertexPool> g_LocalVertexPool(LOCAL_VERTEX_POOL_OP);
+REGISTER_FLTRECORD(LocalVertexPool, LOCAL_VERTEX_POOL_OP)
+
 
 
@@ -1272,5 +1277,6 @@
 };
 
-RegisterRecordProxy<MeshPrimitive> g_MeshPrimitive(MESH_PRIMITIVE_OP);
+REGISTER_FLTRECORD(MeshPrimitive, MESH_PRIMITIVE_OP)
+
 
 
Index: /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/Registry.h
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/Registry.h (revision 8003)
+++ /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/Registry.h (revision 10283)
@@ -123,4 +123,25 @@
 };
 
+//////////////////////////////////////////////////////////////////////////
+
+extern "C"
+{
+    typedef void (* CRecordFunction) (void);
+}
+
+struct RecordFunctionProxy
+{
+    RecordFunctionProxy(CRecordFunction function) { (function)(); }
+};
+
+#define USE_FLTRECORD(recname, opcode) \
+    extern "C" void osgfltrec_##recname_##opcode(void); \
+    static flt::RecordFunctionProxy proxy_fltrecord_##recname_##opcode(osgfltrec_##recname_##opcode);
+
+#define REGISTER_FLTRECORD(recname, opcode) \
+    extern "C" void osgfltrec_##recname_##opcode(void) {} \
+    static flt::RegisterRecordProxy<recname> g_proxy_fltrecord_##recname_##opcode(opcode);
+
+
 } // end namespace
 
Index: /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/PaletteRecords.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/PaletteRecords.cpp (revision 9527)
+++ /OpenSceneGraph/trunk/src/osgPlugins/OpenFlight/PaletteRecords.cpp (revision 10283)
@@ -61,5 +61,6 @@
 };
 
-RegisterRecordProxy<VertexPalette> g_VertexPalette(VERTEX_PALETTE_OP);
+REGISTER_FLTRECORD(VertexPalette, VERTEX_PALETTE_OP)
+
 
 
@@ -141,5 +142,6 @@
 
 
-RegisterRecordProxy<ColorPalette> g_ColorPalette(COLOR_PALETTE_OP);
+REGISTER_FLTRECORD(ColorPalette, COLOR_PALETTE_OP)
+
 
 
@@ -161,5 +163,6 @@
 };
 
-RegisterRecordProxy<NameTable> g_NameTable(NAME_TABLE_OP);
+REGISTER_FLTRECORD(NameTable, NAME_TABLE_OP)
+
 
 
@@ -205,5 +208,6 @@
 };
 
-RegisterRecordProxy<MaterialPalette> g_MaterialPalette(MATERIAL_PALETTE_OP);
+REGISTER_FLTRECORD(MaterialPalette, MATERIAL_PALETTE_OP)
+
 
 
@@ -252,5 +256,6 @@
 };
 
-RegisterRecordProxy<OldMaterialPalette> g_OldMaterialPalette(OLD_MATERIAL_PALETTE_OP);
+REGISTER_FLTRECORD(OldMaterialPalette, OLD_MATERIAL_PALETTE_OP)
+
 
 
@@ -467,5 +472,6 @@
 };
 
-RegisterRecordProxy<TexturePalette> g_TexturePalette(TEXTURE_PALETTE_OP);
+REGISTER_FLTRECORD(TexturePalette, TEXTURE_PALETTE_OP)
+
 
 
@@ -485,5 +491,6 @@
 };
 
-RegisterRecordProxy<EyepointAndTrackplanePalette> g_EyepointAndTrackplanePalette(EYEPOINT_AND_TRACKPLANE_PALETTE_OP);
+REGISTER_FLTRECORD(EyepointAndTrackplanePalette, EYEPOINT_AND_TRACKPLANE_PALETTE_OP)
+
 
 
@@ -503,5 +510,6 @@
 };
 
-RegisterRecordProxy<LinkagePalette> g_LinkagePalette(LINKAGE_PALETTE_OP);
+REGISTER_FLTRECORD(LinkagePalette, LINKAGE_PALETTE_OP)
+
 
 
@@ -521,5 +529,6 @@
 };
 
-RegisterRecordProxy<SoundPalette> g_SoundPalette(SOUND_PALETTE_OP);
+REGISTER_FLTRECORD(SoundPalette, SOUND_PALETTE_OP)
+
 
 
@@ -600,5 +609,6 @@
 };
 
-RegisterRecordProxy<LightSourcePalette> g_LightSourcePalette(LIGHT_SOURCE_PALETTE_OP);
+REGISTER_FLTRECORD(LightSourcePalette, LIGHT_SOURCE_PALETTE_OP)
+
 
 
@@ -682,5 +692,6 @@
 };
 
-RegisterRecordProxy<LightPointAppearancePalette> g_LightPointAppearancePalette(LIGHT_POINT_APPEARANCE_PALETTE_OP);
+REGISTER_FLTRECORD(LightPointAppearancePalette, LIGHT_POINT_APPEARANCE_PALETTE_OP)
+
 
 
@@ -740,5 +751,6 @@
 };
 
-RegisterRecordProxy<LightPointAnimationPalette> g_LightPointAnimationPalette(LIGHT_POINT_ANIMATION_PALETTE_OP);
+REGISTER_FLTRECORD(LightPointAnimationPalette, LIGHT_POINT_ANIMATION_PALETTE_OP)
+
 
 
@@ -760,5 +772,6 @@
 };
 
-RegisterRecordProxy<LineStylePalette> g_LineStylePalette(LINE_STYLE_PALETTE_OP);
+REGISTER_FLTRECORD(LineStylePalette, LINE_STYLE_PALETTE_OP)
+
 
 
@@ -780,5 +793,6 @@
 };
 
-RegisterRecordProxy<TextureMappingPalette> g_TextureMappingPalette(TEXTURE_MAPPING_PALETTE_OP);
+REGISTER_FLTRECORD(TextureMappingPalette, TEXTURE_MAPPING_PALETTE_OP)
+
 
 
@@ -877,5 +891,6 @@
 };
 
-RegisterRecordProxy<ShaderPalette> g_ShaderPalette(SHADER_PALETTE_OP);
+REGISTER_FLTRECORD(ShaderPalette, SHADER_PALETTE_OP)
+
 
 } // end namespace
