Jump to content
Eternal Lands Official Forums
Wytter

Windows Compilation Guide

Recommended Posts

Here's a fix for people who run into the problem with:

 

undefined reference to _imp_xmlFree();

 

When linking the client.

 

Open $DEVCPP/libxml/xmlexports.h

 

Edit every line that says:

 

#if defined(IN_LIBXML) && !defined(LIBXML_STATIC)

 

And change it to:

 

#if !defined(LIBXML_STATIC)

 

 

And press recompile all.

 

At least that worked for me.

Share this post


Link to post
Share on other sites

The first post made it all sound fairly plain sailing...... but:

 

1.2 TortoiseCVS Download (4.7 MB)

Go to the directory where you want to checkout the source, then right click in the explorer window, and select "CVS Checkout", and specify the CVSROOT- :pserver:anonymous@cvs.elc.berlios.de:/cvsroot/elc

the specify the module- elc

Then press OK to checkout the source.

 

This worked a treat!

 

2.  Getting and Installing the libraries

 

2.2 BLOODSHED DEV-C++

Open Dev-Cpp, and go to Tools->Check for Updates/Packages, and download select versions of the following packages:

 

libxml2-2.6.19.win32

OggVorbis-win32sdk-1.0.1

OpenAL SDK (version 1.0)

iconv-1.9.1.win32

SDL-devel-1.2.8-VC6

SDL_net-devel-1.2.5-VC6

 

You may need to switch mirrors to get all of the packages. Dev-Cpp will install all of the files to their correct directories.

 

Compiler downloaded fine, but I could not find libxml2 or iconv in the packages. Are they under another name? And the SDL packages don't have either 'devel' or 'VC6' in the names. Correct or not?

 

3. Compiling and Installing The Eternal Lands Client

 

3.2 BLOODSHED DEV-C++

On Dev-Cpp, just create a new C project with all of the files, except cal3dwrap.c and cal3dwrap.h.  Then, you can just hit compile, or you can use the default Makefile by opening Project->Project Options, select Makefile, tick off "Use Custom Makefile", click the button on the right (Load), and select Makefile.win, THEN hit compile.

 

 

Neither of these worked. Hitting compile produces thousands of errors which I'm going to have a look at to see if there is a common thread to them.

Trying to use the Makefile stops immediately with the error "No rule to make target 3d_objects.c. And there is no 'load' button, which suggests that the guide was done with a different version of dev-cpp! :-(

 

Regards

Share this post


Link to post
Share on other sites

OK - I've got a bit further.

Bits missing from the info above:

 

add two include directories

C:\Dev-Cpp\include\SDL

C:\Dev-Cpp\include\al

 

(this assumes where you installed dev-cpp - the above is the default)

 

I downloaded the iconv and libxml2 zips pointed to in the MSC section and manualy copied the contents into the dec-cpp directories.

 

I now have a stopper that the compiler doesnt recognise the token GLsizeiptrARB which is in gl_init.h line 51. Where is this defined please?

 

Regards

Share this post


Link to post
Share on other sites

You will need a new glext.h - replace the old one in the include/GL/ folder

Share this post


Link to post
Share on other sites
You will need a new glext.h - replace the old one in the include/GL/ folder

171671[/snapback]

 

Thanks for that. After a search on these foums I found a pointer to where this file resides and we move on!

 

Minor thing: In function init_stuff the library call chdir() has an implicit declaration.

 

Next we have:

.drecrtve /DEFAULTLIB: "uuid.lib" unrecognised

 

This appear to be from a file elc.dsp. I have no idea what it is supposed to be doing!

 

Finaly I get *lots* of linker errors - most of which seem to be from ogg/vorbis, so I'd hazard a guess that a library was left out of the first post.

 

Regards

Share this post


Link to post
Share on other sites

Are you sure that the libraries are in their right directory? They need to be in $DEVCPP/lib/

Share this post


Link to post
Share on other sites
Are you sure that the libraries are in their right directory? They need to be in $DEVCPP/lib/

171693[/snapback]

 

 

Yes - they were. However the first post omits two libraries from the link list:

-vorbis and -logg.

 

I am now down to missing _imp_xmlFree somewhere. I see some comments in this forum about it, bit no clear resolution.

 

Regards.

Share this post


Link to post
Share on other sites

Try with just using

 

#define _imp_xmlFree(var) free(var)

 

Should work fine

Edited by Wytter

Share this post


Link to post
Share on other sites
Try with just using

 

#define _imp_xmlFree(var) free(var)

 

Should work fine

171710[/snapback]

 

Thanks for the respoinses so far!

 

Where should this be placed?

 

I have now got the impression that uuid.lib is *only* available with the MS SDK platform. Unless someone knows otherwise.

 

Regards

Share this post


Link to post
Share on other sites

The easiest way would be to add the following to the compile flags:

 

-D"_imp_xmlFree(var) free(var)"

Share this post


Link to post
Share on other sites
lol, just use MS Visual C++

I can't get mine to compile with Dev-Cpp,

but works out perfectly on MS's one :D

171726[/snapback]

 

 

Ah good! You will buy my copy? <grin>

 

Regards

Share this post


Link to post
Share on other sites
The easiest way would be to add the following to the compile flags:

 

-D"_imp_xmlFree(var) free(var)"

171722[/snapback]

 

Neat idea. But is doesn't work! :-(

 

Regards

Share this post


Link to post
Share on other sites

Then try adding it to global.h - that is the:

 

#define _imp_xmlFree(var) free(var)

 

Remember to click recompile all.

Edited by Wytter

Share this post


Link to post
Share on other sites

Finally I tried this guide myself, and I discovered quite some problems. I'll just list them here for now:

  • Both WinCVS and TortoiseCVS require a recent version of Microsoft ® Internet Explorer ®. If you are using them on plain Windows ® 98 with IE 4.0, you have to upgrade IE first.
  • The makefile shipped with ELC relies on dev-cpp being installed in c:\dev-cpp\. We should tell users this.
  • dev-dpp silently overwrites Makefile.win when it generates a Makefile!
  • Before you can install new packages you have to install a new mirrors list and restart the updates dialog.
  • The package names are different in dev-cpp than in VC++! I'm not sure if every user can translate "libsdl" into "Simple Direct Media Layer"
  • SDL 1.2.5 is not sufficient anymore, because it lacks mouse wheel support. I used version 1.2.8 and it worked.
  • There is no libxml package for dev-cpp! It has to be manually downloaded from xmlsoft.com and the lib/ and include/ dirs copied to c:\dev-cpp
  • Dev-Cpp places some headers in subdirectories, examples: al/, sdl/, gl/, ogg/. In order to make directives like #include <al.h> work, these subdirectories have to be specified using the -I compiler switch
  • the -D compiler switches are not up-to-date. -DWINDOWS -DELC -DNOTEPAD should work.
  • Though it has been mentioned at various places in this forum, it is probably a good idea to mention that you have to get a recent copy of glext.h from SGI
  • It is not possible to link elc.exe on Windows 98 because command.com fails on executing commands with more than 644 characters. Yuck! -- Tricked it using *.o now, but I get lots of unresolved references. Added -lvorbis, -logg and -lvorbisenc and only oggpack_read and oggpack_write seem to remain (somehow output redirection doesn't work with gcc.exe).

Edited by Lachesis

Share this post


Link to post
Share on other sites

Little problem:

 

I'm using Dev-Cpp

 

there was problem with X11/Xlib.h (+others) files missing

i downloaded em from sourceforge

but then it found while compilation tkIntXlibDecls.h is missing

again d/loaded it from sourceforge

just now i have tons of errors in that file while compilation

(tried couple versions of file)

 

anyone got idea why ? and how to fix it ?

 

BTW. where i can show to someone what i have done, while i'm not part of any dev team, but made some things (not much, f.ex. in-game different language chooser at client start and some translations) that could be perhaps usefull some day... ??

Share this post


Link to post
Share on other sites
3.1 MICROSOFT VISUAL C++

<snip>

This part is very important if you are using Visual Studio.NET.  Open global.h and type

#define inline __inline

Put that after the line:    #define __GLOBAL_H__

155865[/snapback]

we got this fixed. no longer necessary. :(

 

BTW. where i can show to someone what i have done, while i'm not part of any dev team, but made some things (not much, f.ex. in-game different language chooser at client start and some translations) that could be perhaps usefull some day... ??

178912[/snapback]

sign up on berlios.de and make diffs between your changes and CVS. sumbit the patches to EL's project on berlios, and post in the forum with the number and/or link so people can critique your ideas and code. for any large effort, post beforehand. so you don't do something the same time as someone else

 

also, everyone please note, this guide is no longer accurate since the change to Cal3d.

see the threads on that for the further steps to take

Edited by ttlanhil

Share this post


Link to post
Share on other sites

Is a programmer willing to update this post, to make a nice, clean guide to compiling the client?

 

Is been really messy since the cal3d addition, Unfortunatly it doesnt like to compile properly on mingw (dev-c++), and when it does, it misses the wrapper info we need, to top it off, there is no dev-pak for it, And a bunch of instructions that may or may not work for the indervidual depending on version of mingw etc being used.

Then there is the requirements depending on what flags you need enabled in the client, like the xml write gear.

Probably more stuff since i last looked. vorbis also has a few requirements. fun fun =).

Once the next version of cal3d is released and the client is updated for it, Things should be a lot cleaner.

Share this post


Link to post
Share on other sites

there is no dev-pak for it, And a bunch of instructions that may or may not work for the indervidual depending on version of mingw etc being used.

I think I can change that next week, when I have a break between projects. :evilgrin:

Share this post


Link to post
Share on other sites

OK, before I try to amend the frontpage instructions, someone (preferrably with Dev-Cpp/Code::Blocks) try the following:

 

Download and run http://www.rootshell.be/~bremac/dist/Cal3D.DevPak

Copy the two DLL files starting with cal3d out of your $DEV-CPP\dll directory to your EL directory. (Yes, I know I could install them to the System folder, but I want to make programmers aware that there is an extra file. This is because cal3d_extra only needs to be compiled once, and is quite reusable. Plus, it saves setup headaches.)

 

Follow the instructions on the first page of this thread, adding the following to your compiler flags:

-lcal3d -lcal3d_extra

 

You'll probably also need to alter the compiler flags, to something like the following (Note: somebody has to clean up the compiler flags. If it's in mainstream distribution, couldn't we just make it default?):

-Wall -DELC -DNEW_FRUSTUM -DBUG_FIX_3D_OBJECTS_MIN_MAX -DWIDGETS_FIX -DNEW_TEX -DNETWORK_THREAD -DNEW_ACTOR_ANIMATION -DCOMMAND_BUFFER -DOPTIONS_I18N -DAUTO_UPDATE

 

(On further inspection, can't we just mainstream NEW_FRUSTUM, WIDGETS_FIX, NETWORK_THREAD, COMMAND_BUFFER, AUTO_UPDATE and OPTIONS_I18N?)

Edited by crusadingknight

Share this post


Link to post
Share on other sites

OK, before I try to amend the frontpage instructions, someone (preferrably with Dev-Cpp/Code::Blocks) try the following:

 

Download and run http://www.rootshell.be/~bremac/dist/Cal3D.DevPak

Copy the two DLL files starting with cal3d out of your $DEV-CPP\dll directory to your EL directory. (Yes, I know I could install them to the System folder, but I want to make programmers aware that there is an extra file. This is because cal3d_extra only needs to be compiled once, and is quite reusable. Plus, it saves setup headaches.)

 

Follow the instructions on the first page of this thread, adding the following to your compiler flags:

-lcal3d -lcal3d_extra

 

You'll probably also need to alter the compiler flags, to something like the following (Note: somebody has to clean up the compiler flags. If it's in mainstream distribution, couldn't we just make it default?):

-DWINDOWS -Wall -DELC -DNEW_FRUSTUM -DBUG_FIX_3D_OBJECTS_MIN_MAX -DWIDGETS_FIX -DNEW_TEX -DNETWORK_THREAD -DNEW_ACTOR_ANIMATION -DCOMMAND_BUFFER -DOPTIONS_I18N

BUG_FIX_3D_OBJECTS_MIN_MAX should never be main stream! It is a hack for some bad data in the files. Once the bad data is removed this compile option wont be needed and file load time will improve a little.

 

(On further inspection, can't we just mainstream NEW_FRUSTUM, BUG_FIX_3D_OBJECTS_MIN_MAX, WIDGETS_FIX, NETWORK_THREAD, COMMAND_BUFFER, and OPTIONS_I18N?)

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×