Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > [Linker Fatal Error] ?


Автор: atam91 18.11.2007, 22:11
[Linker Fatal Error] Fatal:Oject file ...\MODEL.OBJ is missing a section of class 2
помогите пожалуйста у меня вылетает такая ошибка

есть файл model.cpp там две процедуры
и файл со структурами Texture.h

при компиляции программы выдает эту ошибку и даже не понятно как к ней подойдти что сделать
помогите пожалуйста.

Автор: JackYF 19.11.2007, 00:23
Цитата(atam91 @  18.11.2007,  22:11 Найти цитируемый пост)
есть файл model.cpp там две процедуры
и файл со структурами Texture.h

ну так выкладывай оба файла сюда.

Компилятор какой?

Автор: lenin_yo 19.11.2007, 01:34
С таким "детальным" описанием довольно сложно догнать до истиной причины проблемы..

Автор: Lazin 19.11.2007, 09:06
Это какой-то баг билдера, удали все obj и tds файлы, и попробуй пересобрать проект.

Автор: atam91 19.11.2007, 16:52
вообще мне сказали что проблема в H файлах
я вроде навел порядок но
[C++ Error] model.h(24): E2303 Type name expected

model.h
Код


#ifndef __model_H__
#define __model_H__

#include "Texture.h"






struct Vertexx
{
  float x,y,z,u,v;
  char bone;
};

struct Triangless
{
  int nump[3];
  
};

struct matER
{
  Texture dift[1];

};

struct Meshh
{
  Vertexx *point;
  Triangless *triang;

  int numPoi,numTri,iMat,nNorm;
};

struct Modell
{
   matER *Mater;
   Meshh *Mesh;

   int numMes,numMat,cFrame;
   
};


#endif


Texture.h
Код

#ifndef __TEXTURE_H__
#define __TEXTURE_H__

                                        
#include "engine.h"                                    


struct Texture{
    GLubyte    * imageData;                                    
    GLuint    bpp;                                            
    GLuint    width;                                        
    GLuint    height;                                        
    GLuint    texID;                                
    GLuint    type;                                    
} ;



#endif


Автор: JackYF 19.11.2007, 18:49
Цитата(atam91 @  19.11.2007,  16:52 Найти цитируемый пост)
[C++ Error] model.h(24): E2303 Type name expected

ты что-то вырезал из исходников? если да, то укажи руками, на какую строку ругается компилятор.

Автор: atam91 19.11.2007, 20:43
просто старый файл выкинул
а ругается она на 25 строку

Texture dift[1];

Автор: atam91 21.11.2007, 21:41
что никто не знает что ли?

Автор: JackYF 21.11.2007, 22:55
Цитата(atam91 @  21.11.2007,  21:41 Найти цитируемый пост)
что никто не знает что ли? 

не должно ругаться... попробуй вырезать из исходников как больше, чтобы осталась ситуация, когда компилер ругается. Это выложи, я попробую скомпилить у себя.

Автор: atam91 22.11.2007, 00:05
сейчас не дождавшись ответа я решил  сделать все подругому согнать все в один модуль
Код

#ifndef __engine_H__
#define __engine_H__

#include <fstream.h>

#include <gl\gl.h>    // OpenGL32
 #include <gl\glu.h>    // OpenGL32


struct Texture{
    GLubyte    * imageData;                                    // Image Data (Up To 32 Bits)
    GLuint    bpp;                                            // Image Color Depth In Bits Per Pixel
    GLuint    width;                                            // Image Width
    GLuint    height;                                            // Image Height
    GLuint    texID;                                            // Texture ID Used To Select A Texture
    GLuint    type;                                            // Image Type (GL_RGB, GL_RGBA)
} ;




struct Vertexx
{
  float x,y,z,u,v;
  char bone;
};

struct Triangless
{
  int nump[3];
  //в будущем тут нормали
};

struct matER
{

  Texture dift[1];

};

struct Meshh
{
  Vertexx *point;
  Triangless *triang;

  int numPoi,numTri,iMat,nNorm;
};

struct Modell
{
   matER *Mater;
   Meshh *Mesh;

   int numMes,numMat,cFrame;
   //materials here
};
 //-------------------------------------------------------------------------
HGLRC ghRC;
HDC   ghDC;

float maxx=60,minx=-60,maxy=60,maxz=60,miny=-60,minz=-60;
  //-------------------------------------------------------------------------
  typedef struct
{
      int size,xstep,ystep,zstep;
      byte *height;
} landsh;

//TGA GAGAGA

typedef struct
{
    GLubyte Header[12];                                    // TGA File Header
} TGAHeader;


typedef struct
{
    GLubyte        header[6];                                // First 6 Useful Bytes From The Header
    GLuint        bytesPerPixel;                            // Holds Number Of Bytes Per Pixel Used In The TGA File
    GLuint        imageSize;                                // Used To Store The Image Size When Setting Aside Ram
    GLuint        temp;                                    // Temporary Variable
    GLuint        type;
    GLuint        Height;                                    //Height of Image
    GLuint        Width;                                    //Width ofImage
    GLuint        Bpp;                                    // Bits Per Pixel
} TGA;


TGAHeader tgaheader;                                    // TGA header
TGA tga;                                                // TGA image data



GLubyte uTGAcompare[12] = {0,0,2, 0,0,0,0,0,0,0,0,0};    // Uncompressed TGA Header
GLubyte cTGAcompare[12] = {0,0,10,0,0,0,0,0,0,0,0,0};    // Compressed TGA Header
bool LoadUncompressedTGA(Texture *, char *, FILE *);    // Load an Uncompressed file
bool LoadCompressedTGA(Texture *, char *, FILE *);        // Load a Compressed file
//*********************************************************



#endif



и этот файл я несколько раз подключаю   ПОДКЛЮЧАЮ только его
а он говрит что 2 раза объявляется gl.h я не пониаю define прописан как у меня так и в гл
вот

Автор: JackYF 22.11.2007, 01:24
Цитата(atam91 @  22.11.2007,  00:05 Найти цитируемый пост)
а он говрит что 2 раза объявляется gl.h я не пониаю define прописан как у меня так и в гл
вот 

вроде всё правильно у тебя. К сожалению, возможно, это глюк билдера. У него иногда подобное бывает - не хочет компилироваться вполне законный код.

Автор: atam91 22.11.2007, 14:52
и что мне делать

Автор: xvr 22.11.2007, 15:38
Цитата(atam91 @ 22.11.2007,  00:05)
сейчас не дождавшись ответа я решил  сделать все подругому согнать все в один модуль
Код

#ifndef __engine_H__
#define __engine_H__

#include <fstream.h>

#include <gl\gl.h>    // OpenGL32
 #include <gl\glu.h>    // OpenGL32

#endif



и этот файл я несколько раз подключаю   ПОДКЛЮЧАЮ только его

Выкини #include <gl\gl.h> (glu.h) достаточно

Цитата

Код

HGLRC ghRC;
HDC   ghDC;

float maxx=60,minx=-60,maxy=60,maxz=60,miny=-60,minz=-60;

Помещать описания переменных в ридеры - дурной тон smile
Цитата

а он говрит что 2 раза объявляется gl.h я не пониаю define прописан как у меня так и в гл
вот
Ничего не понял - как дословно ругается?

Автор: atam91 22.11.2007, 21:44
а где мне тогда константы прописывать если это плохой тон?

Автор: xvr 22.11.2007, 22:02
Цитата(atam91 @ 22.11.2007,  21:44)
а где мне тогда константы прописывать если это плохой тон?

Это не константы - это переменные, и если будет больше одного модуля, где подключается этот .h файл, то будет ругань от линкера по поводу double definition

Цитата

Код

HGLRC ghRC;
HDC   ghDC;


Это вообще в чистом виде переменные

Цитата

Код

float maxx=60,minx=-60,maxy=60,maxz=60,miny=-60,minz=-60;


Если это должны быть константы, то так и пиши

Код

static const float maxx=60,minx=-60,maxy=60,maxz=60,miny=-60,minz=-60;


Автор: illidan 24.11.2007, 01:05
ты точно всё врубил? у меня проблы тежы были с Tchart я не выбрал какая будет диаграма

Автор: atam91 24.11.2007, 14:02
извините пожалуйста а что за диаграмма?

Автор: atam91 27.11.2007, 13:14
все нашел ряд ошибок и теперь у меня все хорошо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)