Page 1 of 4

Free Windows-based compiling for Celestia.

Posted: 16.11.2004, 21:50
by wcomer
The purpose of this thread is to provide a walkthrough for installing a free Windows based development environment for Celestia. This project was largely inspired by Paolo Angeli’s primer for compiling Celestia under Visual Studio C++. Some steps require large downloads; where applicable I will give approximate completion times for broadband installation. The entire process start to finish should take 1-2 hours on broadband.
    I. Acquiring the Celestia CVS.
    II. Installing MS Visual C++ Toolkit 2003.
    III. Installing Microsoft Platform SDK.
    IV. Installing miscellaneous utilities.
    V. Setting up your working directory.
    VI. Compiling Celestia.
    VII. Subsequent Compiles.
I. Acquiring the Celestia CVS.
    The CVS is the online repository for Celestia code base. You will need a CVS client in order to easily acquire the Celestia source code. Two popular windows CVS clients are WinCVS and TortoiseCVS. I have used both, but recommend the Tortoise interface as it is somewhat simpler to use.

    Acquiring Celestia CVS with WinCVS:
    See Paolo's detailed explanations (Phase I: get the code)
    http://shatters.net/forum/viewtopic.php?t=3637
    Note - Paolo’s instructions are not compatible with the WinCVS 1.3.x, so download WinCVS version 1.2.

    Acquiring Celestia CVS with TortoiseCVS:
    1) Download the latest version here: (1-2 min, 3.7 MB)
    http://www.tortoisecvs.org/download.shtml
    2) Follow the TortoiseCVS installation instructions. Note – you may be asked to reboot your machine but in my experience this wasn’t necessary.
    3) Create a new folder on your hard drive. Mine is called “C:\TortoiseCVS”. This will be your CVS repository
    4) right-click your CVS repository folder and select “CVS Checkout”. If you do not see this option, then you must reboot your machine and try again.
    5) Enter “:pserver:anonymous@cvs.sourceforge.net:/cvsroot/celestia” as your CVSROOT. This should cause several other fields to fill in. Protocol - “Password server (:pserver:)”; Server – “cvs.sourceforge.net”; Repository folder – “/cvsroot/celestia”; and User name – “anonymous”.
    6) Enter “celestia” as your Module.
    7) Press OK. Now the CVS client will attempt to download the Celestia source code. I'm ballparking the download time at 20 minutes mostly because the CVS server is a bit slow. If it is successful then there will be a subfolder called “celestia” within your CVS repository which will contain the current celestia cvs.
II. Installing MS Visual C++ Toolkit 2003.
III. Installing Microsoft Platform SDK.
    1) The Installation is found at this website: (Note - this site seems to require internet explorer.)
    http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
    2) Select the "Downloads" tab and the "Install" submenu.
    2a) From "Core SDK (Windows Server 2003)": Select "Build environment" and "Build environment (Intel 64-bit)".
    2b) From "Microsoft Data Access Components)": Select "Build Environment".
    3) Click Start Installation and follow the remaining prompts. Note - this is the most time consuming step; give yourself 30 minutes even on broadband.
    If you have difficulties with the net installation due to a dial up connection, then the local installation can be found at http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm (thanks, Maxim.)
    4) Make a note of the installation directory. Mine was,
    “C:\Program Files\Microsoft SDK\”
IV. Installing miscellaneous utilities.
    1) Move Nmake.exe, cvtres.exe, lib.exe from "Microsoft SDK\bin\Win64\" to "Microsoft Visual C++ Toolkit 2003\bin\"
    2) Move RC.exe, RcDll.Dll from "Microsoft SDK\bin\" to "Microsoft Visual C++ Toolkit 2003\bin\"
    3) Download http://download.microsoft.com/download/vc15/patch/1.52/w95/en-us/nmake15.exe (50 kB)
    4) Unzip nmake15.exe
    5) Put nmake.err in the folder "Microsoft Visual C++ Toolkit\bin".
    6) Discard the rest of the nmake15.exe files.
V. Setting up your working directory.
    1) Make a copy of your Celestia CVS to a new folder. Mine is, “C:\MyCelestia”
    2) Download extra libraries from Chris,
    http://shatters.net/celestia/files/winlibs-new.zip (2-3 minutes, 900 kB)
    3) Unzip winlibs-new.zip
    4) Move both subfolders (lib and inc) into "C:\MyCelestia"
    5) Copy the files libpng1.dll and zlib.dll from your actual Celestia installation into "C:\MyCelestia". Celestia.exe will not run without them.
    6) Copy vcvars32.bat from "Microsoft Visual C++ Toolkit 2003\" to "C:\MyCelestia"
    7) Rename the new .bat file "celvars.bat"
    8 ) Edit celvars.bat to read (right-click the file and select ‘edit’.)

    Code: Select all

    @echo off
    Set PATH=C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin
    Set INCLUDE=C:\Program Files\Microsoft Visual C++ Toolkit 2003\include
    Set LIB=C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib

    Set INCLUDE=C:\Program Files\Microsoft SDK\include;%INCLUDE%
    Set LIB=C:\Program Files\Microsoft SDK\Lib;%LIB%
    Set INCLUDE=C:\Program Files\Microsoft SDK\include\Win64\mfc;%INCLUDE%
    Set LIB=C:\Program Files\Microsoft SDK\Lib\IA64\mfc;%LIB%
VI. Compiling Celestia.
    1) Click on the Start Menu and select “Run...”
    2) Type cmd into the prompt and hit enter. This opens a new command prompt.
    3) Type C:\MyCelestia [enter]
    4) Type celvars [enter]
    5) Type makerelease [enter]. If all has gone according to plan, then celestia should begin compiling. This takes about 10 minutes on my 600 MHz PIII.
    6) Using the graphical interface open “C:\MyCelestia”. If the compile was successful then there will be a new “celestia.exe” in the folder. Double-click on it and you will be running the base install of the latest pre-release of Celestia. Congratulations!
VII. Subsequent Compiles.
    1) Right-click “C:\MyCelestia”. Select “CVS Update” and click OK when done. (<1 minute)
    2) Repeat step VI (Compiling Celestia.) This time around Celestia should compile very quickly.

If anyone has problems following these instructions then you can inquire on this thread or by sending me a PM. Hopefully I got it right the first time.

cheers,
Walton Comer

Re: Free Windows-based compiling for Celestia.

Posted: 17.11.2004, 17:42
by maxim
wcomer wrote:III. Installing Microsoft Platform SDK.
1) The Installation is found at this website: (Note - this site seems to require internet explorer.)
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

This is a netinstall and only recommended if you HAVE a broadband access.
The full download for local installation (which doesn't need having IE) can be found at:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

maxim

Posted: 17.11.2004, 18:20
by wcomer
Thanks Maxim,

I've added a note to that effect.

Tthe local installation requires downloading the entire SDK (342 MB). Using the net install greatly reduces the install size by only installing the required components. Sadly, it is only a small handful of SDK files which are needed, but I suspect that offering a zip of those files would be a violation of Microsoft's copyright.

-Walton

Posted: 21.11.2004, 22:19
by maxim
Some more remarks, after I did a step-by-step verification of the walkthrought on a W2000 System:


I. (Acquiring Celestia CVS with TortoiseCVS)
    7a) The checkout process may timing out, especially if you started it turing heavy traffic time (that's late in the evening if accessing from europe).
    You can continue the checkout at any time. Tortoise will repeat, starting at the last incompletely checked out directory.

    7b) If hanging on a dialup line you may savely do the initial checkout at an external broadband access and then copy the complete CVS directory
    to your local computer. Tortoise marks all CVS directories and will recognize the copied one instantly. Subsequent checkouts are usually only
    some dozent kB in size, and can be easily accessed from a dialup line.

II. (Installing MS Visual C++ Toolkit 2003)
    2a) This step does also install the .NET framework runtime. During the framework installation there is one request (reported from your local firewall)
    for accessing the internet and one request (also reported from your local firewall) for a process acting as a server. I allowed both - a real internet
    access didn't occure. Probably this is for internal TCP/IP communication only. It may be also ok to disallow both.

III. (Installing Microsoft Platform SDK from a local installation download)
    alternate
      2) Copy the .cab files that you downloaded from an external broadband access to a place of your choice. The download is about 350MB and fits easily on a 512MB stick.
      2a) Open a command prompt, go to the choosen place and start the extraction by typing 'PSDK-FULL.bat <dir>', where <dir> is another directory, for example 'D:\Temp'.
    alternate
      3) In 'D:\Temp' select 'Setup.exe'.
      3a) Click 'Core SDK', then 'Install this SDK'.
      3b) Click 'MDAC SDK', then 'Install this SDK'.
      3c) Erase everything in 'D:\Temp'.

V. (Setting up your working directory)
    8a) I altered the code to following (to preserve my prior PATH, etc. settings):

Code: Select all

Set PATH=C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;%PATH%
Set INCLUDE=C:\Program Files\Microsoft Visual C++ Toolkit 2003\include;%INCLUDE%
Set LIB=C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib;%LIB%

Set INCLUDE=C:\Program Files\Microsoft SDK\include;%INCLUDE%
Set LIB=C:\Program Files\Microsoft SDK\Lib;%LIB%
Set INCLUDE=C:\Program Files\Microsoft SDK\include\Win64\mfc;%INCLUDE%
Set LIB=C:\Program Files\Microsoft SDK\Lib\IA64\mfc;%LIB%
    it makes no difference.

VI. (Compiling Celestia)
    5a) During compilation you will see several warnings (mostly concerning number conversions) which you can savely ignore IMHO.


maxim

Posted: 05.12.2004, 22:11
by Paolo
I've started a related wiki thread on:
http://en.wikibooks.org/wiki/Celestia:D ... 2_platform

If you agree I'll submit these instructions in the wikibook.

If you prefer you can do it by yourself as well. :wink:

- Paolo

Posted: 15.12.2004, 11:52
by Guest
Out subject : your web site, paolo, can't be seen with Mozilla (or firefox)

Posted: 17.12.2004, 14:54
by Guest
MS Visual C++ Toolkit 2003 doesn't work in Win98. What program I can use like MS Visual C++ Toolkit for Win98?

And where I can find another program or version than Microsoft Platform SDK for Win98?

It's because these programs for compiling Celestia are made for WinXP, not Win98.

Posted: 17.12.2004, 18:41
by wcomer
Guest,

Have you tried using them under Win98? They are listed for WinXP, but I use them under Win2000 without any problems.

good luck,
Walton

Posted: 17.12.2004, 22:39
by kikinho
Yes, I tested, but these programs didn't work. I've read that they are made for WinXP, Win2000 and WinNT only. None of them are made for Win98. :cry:
Ah, and I don't think that WinXP is better than 98 because I tested in another good computer and WinXP use much more memory in programs that I'll never need to use than Win98, it's slowler than 98 and there are some old and recent programs and games that WinXP don't recognize. So that's why I hate WinXP. :evil:

Posted: 19.12.2004, 22:49
by kikinho
Any help? :(

Posted: 25.12.2004, 16:21
by kikinho
Hi celestians. :D

Anyone know if have a program like of MS Visual C++ Toolkit and Microsoft Platform SDK for win98? :)

I want to modify the source code of Celestia not only to add information to bodies, but also to add new star types, like green, violet, pink and brown stars. 8)

I've waited an answer for days, but I didn't receive any. :cry:
Any help will be greatfull. :D

Posted: 25.12.2004, 21:26
by maxim
I'm afraid there won't be any solution for Win98. You may get a cheap w2k license nowadays or a students license.

maxim

Posted: 06.06.2005, 07:47
by georgiouk
Hello .I tried to compile Celestia but unfortunately i am having some difficulties :

cel_engine.lib(dds.obj) : error LNK2001: unresolved external symbol "public: voi
d __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ)
cel_engine.lib(samporbit.obj) : error LNK2001: unresolved external symbol "publi
c: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ)

cel_3ds.lib(3dsread.obj) : error LNK2001: unresolved external symbol "public: vo
id __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ)
cel_engine.lib(texmanager.obj) : error LNK2001: unresolved external symbol "publ
ic: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ
)
cel_engine.lib(image.obj) : error LNK2001: unresolved external symbol "public: v
oid __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ)
cel_engine.lib(virtualtex.obj) : error LNK2001: unresolved external symbol "publ
ic: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ
)
cel_engine.lib(trajmanager.obj) : error LNK2001: unresolved external symbol "pub
lic: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXX
Z)
cel_engine.lib(meshmanager.obj) : error LNK2001: unresolved external symbol "pub
lic: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXX
Z)
cel_engine.lib(vertexprog.obj) : error LNK2001: unresolved external symbol "publ
ic: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ
)
cel_engine.lib(shadermanager.obj) : error LNK2001: unresolved external symbol "p
ublic: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAE
XXZ)
cel_engine.lib(fragmentprog.obj) : error LNK2001: unresolved external symbol "pu
blic: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEX
XZ)
cel_txf.lib(texturefont.obj) : error LNK2001: unresolved external symbol "public
: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ)
cel_engine.lib(console.obj) : error LNK2001: unresolved external symbol "public:
void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ)
cel_engine.lib(overlay.obj) : error LNK2001: unresolved external symbol "public:
void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ)
cel_engine.lib(cmdparser.obj) : error LNK2001: unresolved external symbol "publi
c: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ)

celestiacore.obj : error LNK2019: unresolved external symbol "public: void __thi
scall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ) referenced i
n function "protected: void __thiscall std::basic_ios<char,struct std::char_trai
ts<char> >::init(class std::basic_streambuf<char,struct std::char_traits<char> >
*,bool)" (?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streamb
uf@DU?$char_traits@D@std@@@2@_N@Z)
configfile.obj : error LNK2001: unresolved external symbol "public: void __thisc
all std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ)
winmain.obj : error LNK2001: unresolved external symbol "public: void __thiscall
std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ)
celx.obj : error LNK2001: unresolved external symbol "public: void __thiscall st
d::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ)
cel_engine.lib(customorbit.obj) : error LNK2001: unresolved external symbol "str
uct _iobuf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_io
buf@@PBDHH@Z)
cel_engine.lib(dds.obj) : error LNK2001: unresolved external symbol "struct _iob
uf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobuf@@PBD
HH@Z)
cel_engine.lib(samporbit.obj) : error LNK2001: unresolved external symbol "struc
t _iobuf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobu
f@@PBDHH@Z)
cel_3ds.lib(3dsread.obj) : error LNK2001: unresolved external symbol "struct _io
buf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobuf@@PB
DHH@Z)
cel_engine.lib(texmanager.obj) : error LNK2001: unresolved external symbol "stru
ct _iobuf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iob
uf@@PBDHH@Z)
cel_engine.lib(image.obj) : error LNK2001: unresolved external symbol "struct _i
obuf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobuf@@P
BDHH@Z)
cel_engine.lib(virtualtex.obj) : error LNK2001: unresolved external symbol "stru
ct _iobuf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iob
uf@@PBDHH@Z)
cel_engine.lib(trajmanager.obj) : error LNK2001: unresolved external symbol "str
uct _iobuf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_io
buf@@PBDHH@Z)
cel_engine.lib(meshmanager.obj) : error LNK2001: unresolved external symbol "str
uct _iobuf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_io
buf@@PBDHH@Z)
cel_engine.lib(vertexprog.obj) : error LNK2001: unresolved external symbol "stru
ct _iobuf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iob

I really need some help.
Koula

Posted: 06.06.2005, 17:08
by Tosv
Hello to you all!

1) The Installation is found at this website: (Note - this site seems to require internet explorer.)
http://www.microsoft.com/msdownload/pla ... sdkupdate/
2) Select the "Downloads" tab and the "Install" submenu.
2a) From "Core SDK (Windows Server 2003)": Select "Build environment" and "Build environment (Intel 64-bit)".
2b) From "Microsoft Data Access Components)": Select "Build Environment".


The above link is not valid and the user gets redirected to another page. On that page I can??t find either a "Downloads" tab or an "Install" submenu.

I can neither find the sections "Core SDK (Windows Server 2003)"or the "Microsoft Data Access Components" in the SDK-package. have they been renamed?
Maybe this section of the walkthrough should be re-written... or maybe I??m just stupid. :?

Posted: 06.06.2005, 17:54
by selden

Posted: 06.06.2005, 18:09
by wcomer
georgiouk,

Any luck? I just tried to do a build but I think part of my MS SDK got corrupted at some point and I'll have to reinstall it another time. So I cannot currently reproduce your error. The last time I ran a build was in January and Chris modified a many of the celengine files since then. It's possible that they need some minor changes. Perhaps someone else who is using the free dev kit can comment on whether they have done a successful build in the last few months. Maxim, can you verify any of this?

I'll update the links in the tutorial after I do my reinstall. It looks like my description of the SDK install will have to be modified as well.

cheers,
Walton

Posted: 06.06.2005, 21:33
by Tosv
wcomer wrote:
I'll update the links in the tutorial after I do my reinstall. It looks like my description of the SDK install will have to be modified as well.


I see that you are using the Intel 64-bit-version. is that the same as package PSDK-ia64.exe found on http://www.microsoft.com/downloads/deta ... laylang=en?

I was using the PSDK-x86.exe-package (I have an ordinary 32bit computer). Can this package be different from the one you are using, just a though on why I haven??t been able to follow your descriptions.

And yes, I??m a completely beginner. This is the first time ever I??m trying to compile a program, so forgive me if my questions are a bit naive... :oops:

Tosv

Posted: 17.06.2005, 07:01
by georgiouk
wcomer
unfortunately it seems imposible for to me to compile Celestia .
I continue getting these mistakes which i can not even understand them
(because i am a beginner).

configfile.obj : error LNK2001: unresolved external symbol "struct _iobuf * __c
ecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z)
winmain.obj : error LNK2001: unresolved external symbol "struct _iobuf * __cdec
std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z)
cel_txf.lib(texturefont.obj) : error LNK2001: unresolved external symbol "struc
_iobuf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobu
@@PBDHH@Z)
.\Release\celestia.exe : fatal error LNK1120: 8 unresolved externals
NMAKE : fatal error U1077: 'link.exe' : return code '0x460'
Stop.
NMAKE : fatal error U1077: 'C:\Visual_C\bin\nmake.exe' : return code '0x2'
Stop.

Perhaps there is something going wrong with the files .obj

I would appreciate every info that could solve my problems.

Posted: 25.06.2005, 16:34
by MB
Geogiouk,
As you can see below, I get the same error messages as you got !! :lol: :

cel_engine.lib(modelfile.obj) : error LNK2001: unresolved external symbol "publi
c: void __thiscall std::_String_base::_Xlen(void)const " (?_Xlen@_String_base@st
d@@QBEXXZ)

cel_engine.lib(dds.obj) : error LNK2001: unresolved external symbol "public: voi
d __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ)

cel_engine.lib(customorbit.obj) : error LNK2001: unresolved external symbol "str
uct _iobuf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_io
buf@@PBDHH@Z)

.\Release\celestia.exe : fatal error LNK1120: 8 unresolved externals
NMAKE : fatal error U1077: 'link.exe' : return code '0x460'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual C++ Toolkit 2003\
bin\nmake.exe"' : return code '0x2'
Stop.

Walton,

This message come after at the final link(?), all .obj and .libs has been created. Above is just part of the messages Actually all .lib are concerned.

Thanks for any help
MB

Posted: 02.07.2005, 08:06
by MB
Giourgouk,
See message on the above thread
MB