Terminus Making the code portable to linux

From Bitpost wiki
Revision as of 19:06, 11 May 2006 by M (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

world/bullet.hpp:23: error: type specifier omitted for parameter `szBullet'

To me this looks like it is not finding the Sint32 type in SDL_types.h? Either that or it is not finding my util/graph.h?

But hey, on the positive side, main.cpp and config.cpp have successfully compiled!  :>

Compiling craftselect.cpp... here's the full first error:

In file included from world/weapon.hpp:8,
                 from world/craft.hpp:11,
                 from craftselect.hpp:9,
                 from craftselect.cpp:5:
world/bullet.hpp:23: error: type specifier omitted for parameter `szBullet'
world/bullet.hpp: In member function `TeRect TeBullet::getBoundRect()':
world/bullet.hpp:236: error: request for member `CenteredAt' in `rclBullet',
   which is of non-aggregate type `const TeRect ()(TePoint (*)())'

"non-aggregate" apparently means the compiler doesn't think the return value from CenteredAt is a class or struct. It looks fine to me:

TeRect CenteredAt( TePoint pt ) const;

Lemme sleep on it, I'll give you an answer in the morning...

I emailed you the entire makefile generated by Dev-Cpp.

Here is the portion that applies to craftselect.cpp:

craftselect.o: craftselect.cpp craftselect.hpp util/gui.hpp
 util/graph.hpp util/fixmath.hpp util/text.hpp  util/image.hpp   
 util/element.hpp util/../system.hpp util/../util/log.hpp   util/../util/graph.hpp util/../config.hpp
 util/../xml/xmlutils.h   util/../xml/tinyxml.h util/../profile.hpp util/../util/audio.hpp
 util/../util/graph.hpp util/../xml/xmlutils.h util/blit.hpp   world/craft.hpp world/../gamedef.hpp
 world/../util/image.hpp   world/../util/smoke.hpp world/../util/element.hpp   world/../util/body.hpp
 world/../util/../system.hpp   world/../util/graph.hpp world/../util/fixmath.hpp world/weapon.hpp
 world/bullet.hpp world/../util/anim.hpp world/../util/blit.hpp   world/../util/audio.hpp
 world/../util/exhaust.hpp   world/../util/smoke.hpp world/../util/../gamedef.hpp
 world/../xml/xmlutils.h world/target.hpp world/../util/log.hpp   gamesys.hpp system.hpp
 game.hpp scene.hpp util/text.hpp   util/element.hpp mainmenu.hpp results.hpp world/capital.hpp
 world/block.hpp world/../util/body.hpp world/target.hpp   util/message.hpp world/event.hpp
 world/../util/graph.hpp $(CPP) -c craftselect.cpp -o craftselect.o $(CXXFLAGS)
 

where

CPP  = g++.exe -D__DEBUG__
CXXFLAGS = $(CXXINCS)   -fexceptions -g3
CXXINCS = 

I'm thinking it's a [const] issue... checking...


On the side, there is a new Windows demo available at http://soloforge.com/files/TerminusDemo.zip


Dang John! The content is BURSTING FORTH! This is fun stuff... like a graphic novel come to life...


Cool :-) Oh, the fighter melee tutorial is broken. The latest SVN version fixes it.


Trying to isolate the error in bullet.hpp...

cd terminus/terminus/world
cp bullet.hpp test.cpp
g++ -I/home/m/development/terminus/fmod/api -I/usr/include/SDL test.cpp

That does it. Now to play with test.cpp... OK, looks like g++ sees these and thinks they are function declarations:

const TeSize szBullet( nBulletW, nBulletH );
const TeRect rclBullet( TePoint(), szBullet );

Change to this and g++ "gets" it:

const TeSize szBullet = TeSize( nBulletW, nBulletH );
const TeRect rclBullet = TeRect( TePoint(), szBullet );

John, I hope you don't mind, I checked in that change, and one other similar change in world/craft.hpp. I want to be EXTREMELY careful about breaking anything of yours, can you see if it still works for you?

I suppose to do this right, I should have both Linux and Windows builds set up and test in both... eventually... :>

Next up: replace _finddata_t in the Linux build with a Linux equivalent...

profile.cpp:6:16: io.h: No such file or directory
profile.cpp: In member function `void
   TeProfileMgr::Load(std::basic_string<char, std::char_traits<char>,
   std::allocator<char> >)':
profile.cpp:449: error: `_finddata_t' undeclared (first use this function)