Terminus Making the code portable to linux: Difference between revisions
No edit summary |
No edit summary |
||
Line 116: | Line 116: | ||
I have two options: | I have two options: | ||
# Make my own reusable functions for file operations using M$ calls or [http://docs.hp.com/en/B2355-60105/directory.3C.html Unix calls] | # Make my own reusable functions for file operations using M$ calls or [http://docs.hp.com/en/B2355-60105/directory.3C.html Unix calls] depending on the build target | ||
# Use [http://www.boost.org/libs/filesystem/doc/index.htm the filesystem library in boost] | # Use [http://www.boost.org/libs/filesystem/doc/index.htm the filesystem library in boost] | ||
The first is better if the job is small, but little guys can't afford to reinvent the wheel for anything substantial. I already use boost in HTDJ for serialization. It's definitely got a ramp up time, but it's not too heavy once you're up to speed. I will explore the boost filesystem library docs next... | The first is better if the job is small, but little guys can't afford to reinvent the wheel for anything substantial. I already use boost in HTDJ for serialization. It's definitely got a ramp up time, but it's not too heavy once you're up to speed. I will explore the boost filesystem library docs next... | ||
</font> | </font> |
Revision as of 14:54, 17 July 2006
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)
I found some suggestions:
Try looking at the following functions opendir readdir, readdir_r fnmatch[/color] scandir, where available take a look at glob(3c) and ftw/nftw
I have two options:
- Make my own reusable functions for file operations using M$ calls or Unix calls depending on the build target
- Use the filesystem library in boost
The first is better if the job is small, but little guys can't afford to reinvent the wheel for anything substantial. I already use boost in HTDJ for serialization. It's definitely got a ramp up time, but it's not too heavy once you're up to speed. I will explore the boost filesystem library docs next...