From: Tim <ter...@ro...> - 2008-09-08 04:47:22
|
On September 3, 2008 02:43:10 pm Frank Neumann wrote: > Hi list, > On Sun, 17 Aug 2008 21:18:33 -0400 > Tim <ter...@ro...> wrote: > > [..] > > > So, please try it out and let me know if there are any problems. > > I tried that now, and on a 64bit AMD system under Ubuntu 8.04 I get these > compiler errors: > > make[4]: Entering directory `/home/franky/src/muse-cvs/build/muse' > if g++ -DHAVE_CONFIG_H -I. -I. -I.. -Imidiedit -Iarranger -Iliste > -Iwidgets -Imixer -Idriver -Iwaveedit -Implugins -Iinstruments > -DINSTPREFIX=\"/usr/local\" -g -fno-exceptions -Wall -W -D_GNU_SOURCE > -D_REENTRANT -DQT_CLEAN_NAMESPACE -DQT_NO_COMPAT -I.. -I../muse/widgets > -I/usr/share/qt3/include -O3 -fomit-frame-pointer -ffast-math > -fstrength-reduce -funroll-loops -mcpu=athlon64 -march=athlon64 -I.. > -I../synti -I../muse/widgets -DQT_SHARED -DQT_THREAD_SUPPORT -DQT_PLUGIN > -g -MT audiotrack.o -MD -MP -MF ".deps/audiotrack.Tpo" -c -o audiotrack.o > audiotrack.cpp; \ then mv -f ".deps/audiotrack.Tpo" ".deps/audiotrack.Po"; > else rm -f ".deps/audiotrack.Tpo"; exit 1; fi `-mcpu=' is deprecated. Use > `-mtune=' or '-march=' instead. > [..] > audiotrack.cpp: In function ‘void cacheJackRouteNames()’: > audiotrack.cpp:40: error: cast from ‘AudioInput*’ to ‘unsigned int’ loses > precision audiotrack.cpp:52: error: cast from ‘AudioOutput*’ to ‘unsigned > int’ loses precision audiotrack.cpp:1085: error: cast from ‘const > AudioTrack*’ to ‘unsigned int’ loses precision audiotrack.cpp:1105: error: > cast from ‘const AudioTrack*’ to ‘unsigned int’ loses precision make[4]: > *** [audiotrack.o] Error 1 Ooops! Hold the phone... That shouldn't have happened. Sorry I think that's my fault, NOT yours. Now that I look at the code I think I remember why I cast a pointer to int like that. I think it was because I couldn't figure out how to get the STL map to work with pointers (in this case AudioInput*), so I had to cast as unsigned int ! Otherwise Line 25, for example, would be like this: std::map <AudioInput*, jackRouteNameMap > jackRouteNameCache; instead of this: std::map <unsigned int, jackRouteNameMap > jackRouteNameCache; Frank, I will try again. It's not a nice way of coding that... Even if your fixes (changing to unsigned long) work, it's not nice. Although we might just have to go with it in the end... > > The problem here is that on 64 Bit, unsigned int is 32 bit, while a pointer > to a type is 64 bit. I can fix this locally by replacing some occurrances > of "unsigned int" or "int" with "unsigned long", but since (as usual) I am > not sure whether this is the correct solution, I'd rather leave it up to > you to fix&commit that. > > After that, it at least compiled&linked. Now I'll test it a bit :-). > > The nice thing is that in order to understand a bit of your code, I had to > read some tutorials about STL. Nice side-effect :-). Yes, you might see some attempts in there at fixing a nagging problem of 'erase-while-iterating' STL code. I recently read up on the problem and tried the solutions given, which I was not aware of, but I still had some problems. > > Greetings, > Frank > > PS: Tim, for a long while I have been wondering - everywhere on this list, > in source files, and in your user profile on SourceForge, I always just see > "Tim" or "T356". Do you have a real name (particularly a last name)? :-) I was thinking about that the other day. I guess ever since I got on the net in '94 I've always been paranoid about giving details, even my last name. I've always been a bit 'passive' rather than 'active' on the net (no chat, facebook etc.). Well, that is, until I started contributing to projects ! But you are right. It's a bit rude of me not to introduce myself. Tell you what. I will put my full name in the AUTHORS file next commit. I have to admit, the file does look kind of silly without my last name. Those of you who are curious can see it next time... Tim. |