A primer for new C++ developer volunteers on Win XP
Hi Paolo
I tried to compile Celestia with TortoiseCvs too.
Unfortunately i haven't managed to get Celestia.exe
It seems there is a problem with celestia/src/celestia
i don't know (because i am a beginner with compiling)
but it seems there is a problem with the files .obj
Could you please help me, i have followed exactly
the insructions to get the code
and i don't know what to do next so any help would
be valuable to me.
My OS : Windows XP, Pentium(R) CPU 1.60 GHz
I sent you some of the mistakes :
configfile.obj : error LNK2001: unresolved external symbol "struct _iobuf * __cd
ecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z)
winmain.obj : error LNK2019: unresolved external symbol "struct _iobuf * __cdecl
std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z) refere
nced in function "protected: void __thiscall std::vector<struct _devicemodeA,cla
ss std::allocator<struct _devicemodeA> >::_Xran(void)const " (?_Xran@?$vector@U_
devicemodeA@@V?$allocator@U_devicemodeA@@@std@@@std@@IBEXXZ)
cel_txf.lib(texturefont.obj) : error LNK2001: unresolved external symbol "struct
_iobuf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobuf
@@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.
I tried to compile Celestia with TortoiseCvs too.
Unfortunately i haven't managed to get Celestia.exe
It seems there is a problem with celestia/src/celestia
i don't know (because i am a beginner with compiling)
but it seems there is a problem with the files .obj
Could you please help me, i have followed exactly
the insructions to get the code
and i don't know what to do next so any help would
be valuable to me.
My OS : Windows XP, Pentium(R) CPU 1.60 GHz
I sent you some of the mistakes :
configfile.obj : error LNK2001: unresolved external symbol "struct _iobuf * __cd
ecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z)
winmain.obj : error LNK2019: unresolved external symbol "struct _iobuf * __cdecl
std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z) refere
nced in function "protected: void __thiscall std::vector<struct _devicemodeA,cla
ss std::allocator<struct _devicemodeA> >::_Xran(void)const " (?_Xran@?$vector@U_
devicemodeA@@V?$allocator@U_devicemodeA@@@std@@@std@@IBEXXZ)
cel_txf.lib(texturefont.obj) : error LNK2001: unresolved external symbol "struct
_iobuf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobuf
@@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.
- t00fri
- Developer
- Posts: 8772
- Joined: 29.03.2002
- Age: 22
- With us: 22 years 7 months
- Location: Hamburg, Germany
While I have no idea what this fancy CVS software is good for, I do it quite differently on my Windows XP laptop:
Since I have installed a layer of CYGWIN Linux on top of XP, a little (but clever) script does ALL of the following actions, when I type its name ('cel') into a CYGWIN zsh terminal:
1) It establishes contact to the CVS archive using ssh2 (secure shell) networking from CYGWIN and my public ssh2 ID deposited in my SF account. ==> No passwords needed or the like. Login very fast.
2) It updates new code into a virgin copy of celestia on my Laptop.
3) By means of the ingenious 'rsync' command line tool, it checks out what files are new relative to my already compiled ones in my /working copy/ of celestia. Only these new files are then copied over, and thus the working copy is brought to sync with CVS (in one direction). ALL already compiled files that are unaffected by the update remain UNTOUCHED! That saves LOTS of time.
Then I recompile the few new src files with VS++-Net which takes
less than 30 sec, since usually only a few code files have changed.
The new Celestia.exe is then started in XP. The whole procedure works in largely unattended mode (i.e. in background) and takes /altogether/ always less than 1 minute, even on my comparatively slow Laptop.
I think this is a typical nice example of the seemless cooperation of CYGWIN Linux and Windows XP. The advantages of BOTH systems are exploited ...
When CVS-updating Celestia under native Linux with my (MUCH faster) Desktops, the procedure is analogous, but now completely unattended, since the final gcc compile and link step ('make') is also started by the script. There this is only a <=30 sec affair, with networking to SF taking most of the time.
Bye Fridger
Since I have installed a layer of CYGWIN Linux on top of XP, a little (but clever) script does ALL of the following actions, when I type its name ('cel') into a CYGWIN zsh terminal:
1) It establishes contact to the CVS archive using ssh2 (secure shell) networking from CYGWIN and my public ssh2 ID deposited in my SF account. ==> No passwords needed or the like. Login very fast.
2) It updates new code into a virgin copy of celestia on my Laptop.
3) By means of the ingenious 'rsync' command line tool, it checks out what files are new relative to my already compiled ones in my /working copy/ of celestia. Only these new files are then copied over, and thus the working copy is brought to sync with CVS (in one direction). ALL already compiled files that are unaffected by the update remain UNTOUCHED! That saves LOTS of time.
Then I recompile the few new src files with VS++-Net which takes
less than 30 sec, since usually only a few code files have changed.
The new Celestia.exe is then started in XP. The whole procedure works in largely unattended mode (i.e. in background) and takes /altogether/ always less than 1 minute, even on my comparatively slow Laptop.
I think this is a typical nice example of the seemless cooperation of CYGWIN Linux and Windows XP. The advantages of BOTH systems are exploited ...
When CVS-updating Celestia under native Linux with my (MUCH faster) Desktops, the procedure is analogous, but now completely unattended, since the final gcc compile and link step ('make') is also started by the script. There this is only a <=30 sec affair, with networking to SF taking most of the time.
Bye Fridger
I successfully installed Tortoise CVS and got the sources of celestia. thanks again,
I was surprised how much source files changed recently, at variance with what I expected from the forum information.
I have to install Visual studio .net, I got the 2002 (4 CD), but my system (XP on a laptop) ask for Windows Component Update (WCU) that I don't have. So I am still frustrated, I don't know where I could get it, even after looking at the MS Website.
Thanks Fridger for your message, but as you could imagine I am not yet ready for your script.
MB
I was surprised how much source files changed recently, at variance with what I expected from the forum information.
I have to install Visual studio .net, I got the 2002 (4 CD), but my system (XP on a laptop) ask for Windows Component Update (WCU) that I don't have. So I am still frustrated, I don't know where I could get it, even after looking at the MS Website.
Thanks Fridger for your message, but as you could imagine I am not yet ready for your script.
MB
-
Topic authorPaolo
- Posts: 502
- Joined: 23.09.2002
- With us: 22 years 1 month
- Location: Pordenone/Italy
Hi Fridger
Your CYGWIN solution sounds very practical if you have a Broadband internet access.
I have a 56kb modem and I haven't direct SF access to Celestia so I can't download the whole Celestia code everytime and then compare the differences. This is why WinCVS or TortoiseCVS is a Must for me. After having updated my sandbox I manage the differences between my working copy through WinDiff or Windows commander.
At the end I open the DevC++ IDE and compile.
The bottleneck of the whole operation is the internet connection. The remaining part it is a matter of few minutes.
On the other hand these CVS software are useful to diff the versions of the code and take a look to the revision notes to understand why some file has changed.
Your CYGWIN solution sounds very practical if you have a Broadband internet access.
I have a 56kb modem and I haven't direct SF access to Celestia so I can't download the whole Celestia code everytime and then compare the differences. This is why WinCVS or TortoiseCVS is a Must for me. After having updated my sandbox I manage the differences between my working copy through WinDiff or Windows commander.
At the end I open the DevC++ IDE and compile.
The bottleneck of the whole operation is the internet connection. The remaining part it is a matter of few minutes.
On the other hand these CVS software are useful to diff the versions of the code and take a look to the revision notes to understand why some file has changed.
-
Topic authorPaolo
- Posts: 502
- Joined: 23.09.2002
- With us: 22 years 1 month
- Location: Pordenone/Italy
Hi Georgiouk
I guess that the errors you've reported are dued to wrong linker settings.
I know that this part is very frustrating and depends very much by the settings of the compiler.
Which compiler version are you using?
I don't know if I'll be able to help you with your current compiler tool, but perhaps using another tool...
I guess that the errors you've reported are dued to wrong linker settings.
I know that this part is very frustrating and depends very much by the settings of the compiler.
Which compiler version are you using?
I don't know if I'll be able to help you with your current compiler tool, but perhaps using another tool...
- t00fri
- Developer
- Posts: 8772
- Joined: 29.03.2002
- Age: 22
- With us: 22 years 7 months
- Location: Hamburg, Germany
Paolo wrote:Hi Fridger
Your CYGWIN solution sounds very practical if you have a Broadband internet access.
I have a 56kb modem and I haven't direct SF access to Celestia so I can't download the whole Celestia code everytime and then compare the differences. This is why WinCVS or TortoiseCVS is a Must for me. After having updated my sandbox I manage the differences between my working copy through WinDiff or Windows commander.
At the end I open the DevC++ IDE and compile.
The bottleneck of the whole operation is the internet connection. The remaining part it is a matter of few minutes.
On the other hand these CVS software are useful to diff the versions of the code and take a look to the revision notes to understand why some file has changed.
Paulo,
no, no you misunderstood the main point! In my Laptop, I also have to rely on a 56k modem when I am travelling. Only at home it's part of my fast DSL-supported intranet.
Here is my setup once more:
I maintain a /virgin/ copy of Celestia on the Laptop that I NEVER touch in any way. This copy is directly /updated/ from CVS if there are new source files available.
NOTE: I NEVER reload the whole Celestia distribution via the Net! By God...
The Sync tool 'rsync' then copies ONLY the few new files over (on my laptop) to my /working copy =Sandbox/ of Celestia that I actually use for compiling. The crucial point here is that the object files that are /uninfluenced/ by the new source files remain untouched in the working copy. 'make' can find out about this along with possible recompilations of dependency files ....
In conclusion: my method is /particularly suited/ for slow net transfer and relatively slow CPUs, since only the NECESSARY changes are performed each time.
And it's very fast and convenient: no clicking of menue entries (the most awkward feature in Windows for professionals ). Things work quietly and unattendedly in the background.
Bye Fridger
PS: For those who are not aware of it YET : Why is clicking menues so awkward for experts?
Experts usually type with 10 finger technology on the keyboard VERY FAST. Clicking in between with the mouse in menues INTERRUPTS this fast flow horribly and also affects the concentration negatively....
Every experienced computer person I know (including myself) always prefers using key shortcuts instead of menue mouse clicks. First, memorizing them is ridiculously easy when you use the computer frequently and key shortcuts do INTEGRATE into the typing flow perfectly!
-
Topic authorPaolo
- Posts: 502
- Joined: 23.09.2002
- With us: 22 years 1 month
- Location: Pordenone/Italy
Fridger
I misunderstood the meaning of /virgin/ copy.
I think that you could share your CYGWIN script so anyone that should be interested in could customize it for his personal environment.
BTW I'm for the 10 finger technology too . Perhaps because I'm old enough and so my first PC hadn't an OS with a mouse driven GUI. But there is a lot of people that has never used command line programs.
I misunderstood the meaning of /virgin/ copy.
I think that you could share your CYGWIN script so anyone that should be interested in could customize it for his personal environment.
BTW I'm for the 10 finger technology too . Perhaps because I'm old enough and so my first PC hadn't an OS with a mouse driven GUI. But there is a lot of people that has never used command line programs.
A shell script is surely the best solution as long as you're only dealing with one software package, and won't touch the code but just checkout and recompile.
If working with several CVS modules, Tortoise is simply more convenient because it hooks into windows explorer and shows CVS information while default browsing of files and folders. And CVS functionality is right inside the context menu. No need to open a seperate program when you're target is already under your mouse pointer. You even sometimes get immediate and intuitive CVS information on source code you've just got additional to some software from somewhere without explicitly asking for it - and thus an immediate motivation to check for actual development status.
maxim
If working with several CVS modules, Tortoise is simply more convenient because it hooks into windows explorer and shows CVS information while default browsing of files and folders. And CVS functionality is right inside the context menu. No need to open a seperate program when you're target is already under your mouse pointer. You even sometimes get immediate and intuitive CVS information on source code you've just got additional to some software from somewhere without explicitly asking for it - and thus an immediate motivation to check for actual development status.
maxim
Hi Paolo and to everybody
I am trying to compile with Visual Studio 6.0.
I am just a teacher that wants to translate
Celestia
so it can be used by Greek students.
Altough I have translated el.po i can not
get celestia.exe
Is there a simple , easy way for sb who is
not a programmer as i am
(obviously ) to get celestia.exe ?
Any ideas would help me a lot.
georgiouk
I am trying to compile with Visual Studio 6.0.
I am just a teacher that wants to translate
Celestia
so it can be used by Greek students.
Altough I have translated el.po i can not
get celestia.exe
Is there a simple , easy way for sb who is
not a programmer as i am
(obviously ) to get celestia.exe ?
Any ideas would help me a lot.
georgiouk
-
Topic authorPaolo
- Posts: 502
- Joined: 23.09.2002
- With us: 22 years 1 month
- Location: Pordenone/Italy
Hi Georgiouk
I have Visual Studio 6 too.
This evening I'll annotate and post the project settings.
But are you aware that the *.po files are really useful and effective for the Linux Versions of Celestia only?
So if you plan to make a Greek version of the Windows Celestia you'll have to do a lot of work on the GUI part.
I have Visual Studio 6 too.
This evening I'll annotate and post the project settings.
But are you aware that the *.po files are really useful and effective for the Linux Versions of Celestia only?
So if you plan to make a Greek version of the Windows Celestia you'll have to do a lot of work on the GUI part.
- t00fri
- Developer
- Posts: 8772
- Joined: 29.03.2002
- Age: 22
- With us: 22 years 7 months
- Location: Hamburg, Germany
Paolo wrote:Hi Georgiouk
I have Visual Studio 6 too.
This evening I'll annotate and post the project settings.
But are you aware that the *.po files are really useful and effective for the Linux Versions of Celestia only?
So if you plan to make a Greek version of the Windows Celestia you'll have to do a lot of work on the GUI part.
I seem to remember that recently it was claimed here that the later versions of Celestia don't compile anymore with the old VS 6.0 ??
t00fri wrote:I seem to remember that recently it was claimed here that the later versions of Celestia don't compile anymore with the old VS 6.0 ??
I'm recently been spending a lot of time on Windows and I can confirm that VC6 has issues with Celestia. I had to download the latest optimizing compiler from Microsoft and then it compiled.
Hi georgiouk and All,
I had this problem long time ago, since I used it during years to compile Celestia with VC6. Looking through my old posts will tell you exactly when the new code could no longer be compiled with VC6. Several posts were dedicated to this problem, apparently without solution. My conclusion was: Celestia can no longer be compiles with VC6. I gave up and try to install VS.net. I again gave up. Follows problems with my laptop and others with Linux. The lack of dynamical evolution of Celestia during the last year, (despite the effort of Fridger) also plays a significant role in my lack of interest. BTW, my philosophy is now that, about computer science we can apply a well known french sentence:
"Plus compliqu?©, tu meurs" :(
More positively, as I recently told in this thread, I start again to install tools, and with the kind suggestion of Paolo and Maxim I succeeded to install CVS tortuose and try again to install VS.net without success (see post above).
Finally, using informations given by WComer in the next thread ("The free windows ..............)
I install MS Visual C++ Toolkit 2003. and Microsoft Platform SDK. I was able Yesterday to begin to compile Celestia again!! after 1 or 2 years. Unfortunately, my compile gives error at the first link (Celutil), but I am still confident and if not solved I will again ask for help. :wink:
This is just my experience.
MB
[/url][/quote]
I had this problem long time ago, since I used it during years to compile Celestia with VC6. Looking through my old posts will tell you exactly when the new code could no longer be compiled with VC6. Several posts were dedicated to this problem, apparently without solution. My conclusion was: Celestia can no longer be compiles with VC6. I gave up and try to install VS.net. I again gave up. Follows problems with my laptop and others with Linux. The lack of dynamical evolution of Celestia during the last year, (despite the effort of Fridger) also plays a significant role in my lack of interest. BTW, my philosophy is now that, about computer science we can apply a well known french sentence:
"Plus compliqu?©, tu meurs" :(
More positively, as I recently told in this thread, I start again to install tools, and with the kind suggestion of Paolo and Maxim I succeeded to install CVS tortuose and try again to install VS.net without success (see post above).
Finally, using informations given by WComer in the next thread ("The free windows ..............)
I install MS Visual C++ Toolkit 2003. and Microsoft Platform SDK. I was able Yesterday to begin to compile Celestia again!! after 1 or 2 years. Unfortunately, my compile gives error at the first link (Celutil), but I am still confident and if not solved I will again ask for help. :wink:
This is just my experience.
MB
[/url][/quote]
Again me,
No chance even at the begining of compile procedure , after proper compile of the celutil files, it seems that the link to create the library does not work?
Unfortunately,I am not able to interpret the message.
Any help is appreciated.
Thanks
MB
No chance even at the begining of compile procedure , after proper compile of the celutil files, it seems that the link to create the library does not work?
Unfortunately,I am not able to interpret the message.
Any help is appreciated.
Thanks
MB
Code: Select all
C:\Mycelestia>makerelease
C:\Mycelestia>cd src
C:\Mycelestia\src>nmake /f winbuild.mak CFG=Release
Microsoft (R) Program Maintenance Utility Version 7.00.8882
Copyright (C) Microsoft Corp 1988-2000. All rights reserved.
cd celutil
nmake /NOLOGO util.mak CFG=Release
lib /out:.\Release\cel_utils.lib .\Release\bigfix.obj .\Release\color.obj .\Release\debug.obj .\Release\directory.obj .\Release\filetype.obj .\Release\formatnum.obj .\Release\utf8.obj .\Release\util.obj .\Release\windirectory.obj .\Release\wintimer.obj .\Release\winutil.obj
NMAKE : fatal error U1077: 'lib' : return code '0x80'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual C++ Toolkit 2003\
bin\nmake.exe"' : return code '0x2'
Stop.
Hi Geogiouk and All,
Remember, I had the same error messages as you got!
Convinced that our problem was due to find the good library path , I tried several pathes and finally, at least in my case, with the imposing following path,
Set LIB=C:\Program Files\Microsoft Platform SDK\Lib\IA64\mfc;%LIB%
I succeed in linking celestia and execute it without problem.
The path
Set LIB=C:\Program Files\Microsoft SDK\Lib;%LIB%
originally given by Walton Comer has to be removed in my case (Labtop with Windows XP), and that makes differences at variance to what were found by Maxim ''
I may guess that the first path \Lib superseded the second one.
Finally here is my successful celvars.bat
MB
Remember, I had the same error messages as you got!
Convinced that our problem was due to find the good library path , I tried several pathes and finally, at least in my case, with the imposing following path,
Set LIB=C:\Program Files\Microsoft Platform SDK\Lib\IA64\mfc;%LIB%
I succeed in linking celestia and execute it without problem.
The path
Set LIB=C:\Program Files\Microsoft SDK\Lib;%LIB%
originally given by Walton Comer has to be removed in my case (Labtop with Windows XP), and that makes differences at variance to what were found by Maxim ''
I may guess that the first path \Lib superseded the second one.
Finally here is my successful celvars.bat
Code: Select all
@echo off
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 Platform SDK\include;%INCLUDE%
Set INCLUDE=C:\Program Files\Microsoft Platform SDK\include\mfc;%INCLUDE%
Set LIB=C:\Program Files\Microsoft Platform SDK\Lib\IA64\mfc;%LIB%
MB
-
- Posts: 52
- Joined: 19.10.2004
- With us: 20 years
I'm still getting an error:
It seems to be trying to create a TMP file "nm4D.tmp" but when I look for it, it doesn't exist.
Any ideas?
[edit] ... after much fussing and 24 hours of on-and-off work, I finally got the right combination of INCLUDEs PATHs and LIBs which compiles Celestia.exe on my machine. Phew, now I can finally get to the fun part...or maybe I'll just sleep *yawns and falls asleep*
Code: Select all
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or c
orrupt
NMAKE : fatal error U1077: 'link.exe' : return code '0x463'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual C++ Toolkit 2003\
bin\nmake.exe"' : return code '0x2'
Stop.
It seems to be trying to create a TMP file "nm4D.tmp" but when I look for it, it doesn't exist.
Any ideas?
[edit] ... after much fussing and 24 hours of on-and-off work, I finally got the right combination of INCLUDEs PATHs and LIBs which compiles Celestia.exe on my machine. Phew, now I can finally get to the fun part...or maybe I'll just sleep *yawns and falls asleep*
Hi!
In my attempt to complile I got these mistakes
C:\MyCelestia\celestia\src>nmake /f winbuild.mak CFG=Release
Microsoft (R) Program Maintenance Utility Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.
cd celutil
nmake /NOLOGO util.mak CFG=Release
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code '0x1
Stop.
and I cant understand why C:\Program is not recognised.I have checked my path and I got it correct in my case is:
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 Platform SDK\Include;%INCLUDE%
Set LIB=C:\Program Files\Microsoft SDK\Lib;%LIB%
Set INCLUDE=C:\Program Files\Microsoft Platform SDK\Include\mfc;%INCLUDE%
Set LIB=C:\Program Files\Microsoft Platform SDK\Lib\IA64\mfc;%LIB%
Any ideas?
In my attempt to complile I got these mistakes
C:\MyCelestia\celestia\src>nmake /f winbuild.mak CFG=Release
Microsoft (R) Program Maintenance Utility Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.
cd celutil
nmake /NOLOGO util.mak CFG=Release
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code '0x1
Stop.
and I cant understand why C:\Program is not recognised.I have checked my path and I got it correct in my case is:
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 Platform SDK\Include;%INCLUDE%
Set LIB=C:\Program Files\Microsoft SDK\Lib;%LIB%
Set INCLUDE=C:\Program Files\Microsoft Platform SDK\Include\mfc;%INCLUDE%
Set LIB=C:\Program Files\Microsoft Platform SDK\Lib\IA64\mfc;%LIB%
Any ideas?