Hi,

I could compile your code succesfully with OSG 1.2 on Linux. Can you show us 
what libraries are you linking to?

El Jueves 14 Junio 2007, 김 용호 escribió:
> Hi. Osgs.
> I have a big problem. Would you help me?
>
> When I build up my project, always this message show up.
> --------------------------------------------------------------------
>
> error LNK2019: __imp___CrtDbgReportW unresolved external symbol (referenced
> in "public: class osg::Vec3f const & __thiscall std::vector<class
> osg::Vec3f,class std::allocator<class osg::Vec3f> >::operator[](unsigned
> int)const "
> ([EMAIL PROTECTED]@osg@@[EMAIL PROTECTED]@osg@@@std@@@std@@[EMAIL PROTECTED]
>sg@@[EMAIL PROTECTED]) fucntion)
> C:\Documents and Settings\ksicS\My Documents\Visual Studio
> 2005\Projects\TEMP\Debug\TEMP.exe : fatal error LNK1120:
> -----------------------------------------------------------------------
>
> Maybe, osgd.lib(or osg.lib - release) have some problem(in my opinion..:)
> )
>
> My OSG version is 1.2 ( installer ver).
> (and already check include lib path, include path, etc)
>
> I don't know what is the method vanishing that error message.
>
> Thank you read this letter. I'll wait for your answers.
>
> p.s: I attach example source code. :) plz test that code.
>
>
> /*----------------------------------------------------------------*/
> #include <osg/Node>
> #include <osg/Group>
> #include <osg/Geode>
> #include <osg/Geometry>
> #include <osg/Texture2D>
> #include <osgDB/ReadFile> #include <osgProducer/Viewer>
> #include <osg/PositionAttitudeTransform>
>
> int main()
> {
>   osgProducer::Viewer viewer;
>   osg::Group* root = new osg::Group();
>   osg::Geode* pyramidGeode = new osg::Geode();
>   osg::Geometry* pyramidGeometry = new osg::Geometry();
>
>   //Associate the pyramid geometry with the pyramid geode   //   Add the
> pyramid geode to the root node of the scene graph.
>
>   pyramidGeode->addDrawable(pyramidGeometry);
> root->addChild(pyramidGeode);
>
>   //Declare an array of vertices. Each vertex will be represented by   //a
> triple -- an instances of the vec3 class. An instance of   //osg::Vec3Array
> can be used to store these triples. Since   //osg::Vec3Array is derived
> from the STL vector class, we can use the
>   //push_back method to add array elements. Push back adds elements to
> //the end of the vector, thus the index of first element entered is
> //zero, the second entries index is 1, etc.
>   //Using a right-handed coordinate system with 'z' up, array   //elements
> zero..four below represent the 5 points required to create   //a simple
> pyramid.
>
>   osg::Vec3Array* pyramidVertices = new osg::Vec3Array;
>   pyramidVertices->push_back( osg::Vec3( 0, 0, 0) ); // front left
> pyramidVertices->push_back( osg::Vec3(10, 0, 0) ); // front right
> pyramidVertices->push_back( osg::Vec3(10,10, 0) ); // back right
> pyramidVertices->push_back( osg::Vec3( 0,10, 0) ); // back left
> pyramidVertices->push_back( osg::Vec3( 5, 5,10) ); // peak
>
>   //Associate this set of vertices with the geometry associated with the
> //geode we added to the scene.
>
>   pyramidGeometry->setVertexArray( pyramidVertices );
>
>   //Next, create a primitive set and add it to the pyramid geometry.
> //Use the first four points of the pyramid to define the base using an
> //instance of the DrawElementsUint class. Again this class is derived
> //from the STL vector, so the push_back method will add elements in
> //sequential order. To ensure proper backface cullling, vertices   //should
> be specified in counterclockwise order. The arguments for the
> //constructor are the enumerated type for the primitive   //(same as the
> OpenGL primitive enumerated types), and the index in   //the vertex array
> to start from.
>
>   osg::DrawElementsUInt* pyramidBase =      new
> osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0);
>   pyramidBase->push_back(3);
>   pyramidBase->push_back(2);
>   pyramidBase->push_back(1);
>   pyramidBase->push_back(0);
>   pyramidGeometry->addPrimitiveSet(pyramidBase);
>
>   //Repeat the same for each of the four sides. Again, vertices are
> //specified in counter-clockwise order.
>
>   osg::DrawElementsUInt* pyramidFaceOne =      new
> osg::DrawElementsUInt(osg::PrimitiveSet::TRIANGLES, 0);
>   pyramidFaceOne->push_back(0);
>   pyramidFaceOne->push_back(1);
>   pyramidFaceOne->push_back(4);
>   pyramidGeometry->addPrimitiveSet(pyramidFaceOne);
>
>   osg::DrawElementsUInt* pyramidFaceTwo =      new
> osg::DrawElementsUInt(osg::PrimitiveSet::TRIANGLES, 0);
>   pyramidFaceTwo->push_back(1);
>   pyramidFaceTwo->push_back(2);
>   pyramidFaceTwo->push_back(4);
>   pyramidGeometry->addPrimitiveSet(pyramidFaceTwo);
>
>   osg::DrawElementsUInt* pyramidFaceThree =      new
> osg::DrawElementsUInt(osg::PrimitiveSet::TRIANGLES, 0);
>   pyramidFaceThree->push_back(2);
>   pyramidFaceThree->push_back(3);
>   pyramidFaceThree->push_back(4);
>   pyramidGeometry->addPrimitiveSet(pyramidFaceThree);
>
>   osg::DrawElementsUInt* pyramidFaceFour =      new
> osg::DrawElementsUInt(osg::PrimitiveSet::TRIANGLES, 0);
>   pyramidFaceFour->push_back(3);
>   pyramidFaceFour->push_back(0);
>   pyramidFaceFour->push_back(4);
>   pyramidGeometry->addPrimitiveSet(pyramidFaceFour);
>
>   //Declare and load an array of Vec4 elements to store colors.
>
>   osg::Vec4Array* colors = new osg::Vec4Array;
>   colors->push_back(osg::Vec4(1.0f, 0.0f, 0.0f, 1.0f) ); //index 0 red
>   colors->push_back(osg::Vec4(0.0f, 1.0f, 0.0f, 1.0f) ); //index 1 green
>   colors->push_back(osg::Vec4(0.0f, 0.0f, 1.0f, 1.0f) ); //index 2 blue
>   colors->push_back(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f) ); //index 3 white
>
>   //Declare the variable that will match vertex array elements to color
> //array elements. This vector should have the same number of elements
> //as the number of vertices. This vector serves as a link between
> //vertex arrays and color arrays. Entries in this index array
> //coorespond to elements in the vertex array. Their values coorespond
> //to the index in he color array. This same scheme would be followed   //if
> vertex array elements were matched with normal or texture   //coordinate
> arrays.
>   //   Note that in this case, we are assigning 5 vertices to four   //
> colors. Vertex array element zero (bottom left) and four (peak)   //   are
> both assigned to color array element zero (red).
>
>   osg::TemplateIndexArray
>      <unsigned int, osg::Array::UIntArrayType,4,4> *colorIndexArray;
>   colorIndexArray =      new osg::TemplateIndexArray<unsigned int,
> osg::Array::UIntArrayType,4,4>;
>   colorIndexArray->push_back(0); // vertex 0 assigned color array element 0
>
>   colorIndexArray->push_back(1); // vertex 1 assigned color array element 1
>
>   colorIndexArray->push_back(2); // vertex 2 assigned color array element 2
>
>   colorIndexArray->push_back(3); // vertex 3 assigned color array element 3
>
>   colorIndexArray->push_back(0); // vertex 4 assigned color array element 0
>
>
>   //The next step is to associate the array of colors with the geometry,
> //assign the color indices created above to the geometry and set the
> //binding mode to _PER_VERTEX.
>
>   pyramidGeometry->setColorArray(colors);
>   pyramidGeometry->setColorIndices(colorIndexArray);
>   pyramidGeometry->setColorBinding(osg::Geometry::BIND_PER_VERTEX);
>
>   //Now that we have created a geometry node and added it to the scene
> //we can reuse this geometry. For example, if we wanted to put a   //second
> pyramid 15 units to the right of the first one, we could add   //this geode
> as the child of a transform node in our scene graph.
>
>   // Declare and initialize a transform node.
>   osg::PositionAttitudeTransform* pyramidTwoXForm =
>      new osg::PositionAttitudeTransform();
>
>   // Use the 'addChild' method of the osg::Group class to
>   // add the transform as a child of the root node and the
>   // pyramid node as a child of the transform.
>
>   root->addChild(pyramidTwoXForm);
>   pyramidTwoXForm->addChild(pyramidGeode);
>
>   // Declare and initialize a Vec3 instance to change the
>   // position of the tank model in the scene
>
>   osg::Vec3 pyramidTwoPosition(15,0,0);
>   pyramidTwoXForm->setPosition( pyramidTwoPosition );
>
>   //The final step is to set up and enter a simulation loop.
>
>   viewer.setUpViewer(osgProducer::Viewer::STANDARD_SETTINGS);
>   viewer.setSceneData( root );
>
>   viewer.realize();
>
>   while( !viewer.done() )
>   {
>      viewer.sync();
>      viewer.update();
>      viewer.frame();
>   }
>
>   return 0;
> }
>
>
> /*--------------------------------------------------------------*/
>


_______________________________________________
osg-users mailing list
osg-users@openscenegraph.net
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to