Large Files

BlitzMax Forums/BlitzMax Programming/Large Files

Streaksy(Posted 2014) [#1]
Has BMax ever had an update that fixes the file size limit due to seek variables being integers instead of longs?

I'm holding off before I buy BMax for the annoying things to be fixed, but until I buy it I don't think I get update info...? It's been like 5 years since the only forum discussion about the file size limit was updated.


markcw(Posted 2014) [#2]
Brucey's Bah.FileSystemEx does this but it depends on Bah.Boost. Boost doesn't have any dependencies of it's own.


Streaksy(Posted 2014) [#3]
Oh, great... but where's the download for FileSystemEx? It's not in Brucey's google code base...


GW(Posted 2014) [#4]
(from memory) You have to use SVN on his googlecode repository. tortoisesvn works well.


Streaksy(Posted 2014) [#5]
I dunno what SVN means... but I googled "Brucey FileSystemEx" and I think I found it...

Thanks a lot. This is a game changer, like fixing so many of this little bugs are. :D


Brucey(Posted 2014) [#6]
I'm actually considering - now that I have a separate area for modules for the new compiler - whether it would just be easier to modify all the file/stream functions to support 64-bit addressing/sizes?


xlsior(Posted 2014) [#7]
If it's a drop-in replacement, that would probably be easier for everyone in the long run...


Streaksy(Posted 2014) [#8]
Okay.. sorry... but SVN? Is it a file server thing? Downloading tortoisesvn but can't find any SVN addresses or anything on a Brucey site. Someone please enlighten a noob..


Streaksy(Posted 2014) [#9]
Meh. Never mind.


markcw(Posted 2014) [#10]
Svn is subversion a file management system. It seems complex but all you do is set a http link to a valid svn repo and set a folder to copy to. Svn calls this a checkout. So you open your svn app, then find "add an existing repository" and set the link then do "checkout existing repository" and set a local folder to copy to. Usually you just use the "latest revision" but you can specify an older revision if you supply the right number e.g. "64".

SebHoll made a tortoisesvn tutorial but it seems to have gone now. Try this instead http://www.shokhirev.com/nikolai/programs/SVN/svn.html


Streaksy(Posted 2014) [#11]
I got past that and spent ages trying to work out what Boost even is and how to set it up and I don't know what I'm looking at.

I'm a basic coder for a reason. ;/


Streaksy(Posted 2014) [#12]
Very little in Boost's Getting Started makes ANY sense to me at all, and seems to assume a background in C++. Most of the steps tell you to use things that didn't come with any Boost package I've found.

I'm really trying.... can someone just tell me what needs to be where before I can just get on with BlitzMax coding and making use of FileSystemEx?


Ole JR(Posted 2014) [#13]
Seem to me that you've downloaded the c++ library/sources.

Use SVN again and get Brucey's BlitzMax boost mod from http://maxmods.googlecode.com/svn/trunk/boost.mod/

Drop it into the mod/bah.mod folder, (local copy in svn should be /mod/bah.mod/boost.mod), rebuild modules, and you should be able to use the FileSystemEx.


markcw(Posted 2014) [#14]
Yeah, you don't need to understand Boost if all you're doing is using it as a dependency. All you need to do is open a terminal/cmd, cd to BlitzMax/bin and run (./bmk on unix) 'bmk makemods -a bah.boost' and then the same for filesystemex. Don't do 'bmk makemods -a bah' ie. build everything in one go as dependencies need to be built first. I made a list of bah dependencies here. Then in the IDE do programs>rebuild documentation or you can run in terminal/cmd 'makedocs'. In the third-party docs for bah.filesystemex you'll see the commands are like brl.filesystem but a few extra.


Henri(Posted 2014) [#15]
It is my understanding that bmk is intelligent enough to build modules in correct order.

-Henri


markcw(Posted 2014) [#16]
I would have to disagree.


Henri(Posted 2014) [#17]
At least on Windows I have never build modules in any particular order.

-Henri


xlsior(Posted 2014) [#18]
It is my understanding that bmk is intelligent enough to build modules in correct order.


For the most part -- when switching to a different MinGW version, I've seen it error out on some modules unless I explicitly rebuild several particular ones first.


Streaksy(Posted 2014) [#19]
Had to reinstall windows.... back to trying.

What's been confusing me so much is that copying files/folders from SVN has been SO unreliable and tons was missing, which is why I've been trauling sources... Let's see how I get on once I manage to copy all the boost folder....


Streaksy(Posted 2014) [#20]
Nope, I just keep getting access denied when trying to browse that SVN thing. Even tried running it as admin.

For something aimed at BASIC programmers, 4 weeks is a long time to be trying to install a bloomin' fundamental library. What's the benefits of this SVN thing anyway? ;/


Brucey(Posted 2014) [#21]
Seems to me you'd be best just sticking with the built-in BlitzMax stuff.


Streaksy(Posted 2014) [#22]
Found a way to get the boost lib. Compiling just gives me an error. AGHHHHH.

Maybe it's time to learn a proper language. :P


zoqfotpik(Posted 2014) [#23]
I'd just like to point out that if you think things are going to be easier with C++ and Boost, or the new version that includes Boost, you are in for a very unpleasant realization.

Blitzmax may seem quirky but externs are going to be quirky no matter language you are using, and Blitz elides so much complexity and heartache that it's sort of absurd.


Streaksy(Posted 2014) [#24]
Nah, I was thinking French or something


Streaksy(Posted 2014) [#25]
I use a bunch of libraries but this boost thing is the only thing that's refused to compile. Can like... someone just send me a compiled folder in a RAR? :P I can just compile everything else normally.... or am I insane?


Streaksy(Posted 2014) [#26]
Didn't change anything... but now it compiles the modules but gives me a trillion error messages in the output window when I run anything that includes FileSystemEx.

Here are the first several:

C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x34): undefined reference to `__chkstk_ms'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x4b): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::operator[](unsigned int)'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x6d): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x82): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x8a): undefined reference to `_Unwind_Resume'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0xa4): undefined reference to `__chkstk_ms'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0xd6): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(wchar_t const*, std::allocator<wchar_t> const&)'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0xe3): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0xeb): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0xfe): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x10a): undefined reference to `_Unwind_Resume'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x137): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x14a): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x152): undefined reference to `_Unwind_Resume'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x181): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x193): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x1a6): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x1b4): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x1bc): undefined reference to `_Unwind_Resume'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x1eb): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x1fd): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x210): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x21e): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Program Files (x86)/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x226): undefined reference to `_Unwind_Resume'


Anyone know what's wrong, or what kind of animal I need to sacrifice to get the god of file size limits to stop hating me?


markcw(Posted 2014) [#27]
Don't install Max to Program File (x86) as you need admin privileges there.


Streaksy(Posted 2014) [#28]
Didn't help. ;/


markcw(Posted 2014) [#29]
What version of MinGW gcc do you have? Type gcc --version in cmd.


Streaksy(Posted 2014) [#30]
The latest from the site.

gcc said 3.4.5 (mingw-vista special r3)


markcw(Posted 2014) [#31]
Hmm, you're really supposed to have gcc 4.x, preferably above 4.2.

Try my build. bah.filesystemex-static.zip (removed). Just extract the bah.mod to mod folder.


Streaksy(Posted 2014) [#32]
No difference. :/ I'm trying a new version I had to find with Google. Big download... will try soon. And thanks for bothering with the zip


Streaksy(Posted 2014) [#33]
gcc --version :

gcc <GCC> 4.8.1

Same result...


Streaksy(Posted 2014) [#34]
New messages in output:


Warning: .drectve `-aligncomm:"_joyhandle",2' unrecognized
Warning: .drectve `-aligncomm:"_jerr",2 ' unrecognized
Warning: .drectve `-aligncomm:"_ccinfo",3 ' unrecognized
Warning: .drectve `-aligncomm:"_WriteStream",2 ' unrecognized
Warning: .drectve `-aligncomm:"_ReadStream",2' unrecognized
Warning: .drectve `-aligncomm:"_stderr_",2 ' unrecognized
Warning: .drectve `-aligncomm:"_stdout_",2 ' unrecognized
Warning: .drectve `-aligncomm:"_stdin_",2' unrecognized
Warning: .drectve `-aligncomm:"__bbusew",2 ' unrecognized
Warning: .drectve `-aligncomm:"_bbAppArgs",2 ' unrecognized
Warning: .drectve `-aligncomm:"_bbLaunchDir",2 ' unrecognized
Warning: .drectve `-aligncomm:"_bbAppTitle",2 ' unrecognized
Warning: .drectve `-aligncomm:"_bbAppFile",2 ' unrecognized
Warning: .drectve `-aligncomm:"_bbAppDir",2' unrecognized
Warning: .drectve `-aligncomm:"_bbGCStackTop",2' unrecognized
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x34): undefined reference to `__chkstk_ms'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x4b): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::operator[](unsigned int)'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x6d): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x82): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x8a): undefined reference to `_Unwind_Resume'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0xa4): undefined reference to `__chkstk_ms'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0xd6): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(wchar_t const*, std::allocator<wchar_t> const&)'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0xe3): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0xeb): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0xfe): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x10a): undefined reference to `_Unwind_Resume'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x137): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x14a): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x152): undefined reference to `_Unwind_Resume'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x181): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x193): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x1a6): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x1b4): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x1bc): undefined reference to `_Unwind_Resume'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x1eb): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x1fd): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x210): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x21e): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()'
C:/Progam Files 2/MaxIde/mod/bah.mod/filesystemex.mod/filesystemex.release.win32.x86.a(glue.cpp.release.win32.x86.o):glue.cpp:(.text+0x226): undefined reference to `_Unwind_Resume'


Streaksy(Posted 2014) [#35]
...and so on.


Brucey(Posted 2014) [#36]
As I said, you'd be as well dropping this and getting on with some actual work instead.

MinGW 3.4.5 is way too old to do anything useful, and certainly many of my modules won't compile with it any more - like Boost.
And setting up a new MinGW is non-trivial for most people. (it's not that difficult but people still can't do it properly)

SVN is not that hard to use. It's a source control system, which keeps tracks of changes to the code.

... and then there's GIT, which is different again, doing the same job but in a different way.

FWIW, I've ported the bmx-ng PUB and BRL modules to support large files.
I haven't, yet, looked at doing it to my "up-to-date" PUB and BRL repo because it might break some third-party stuff - given that all the TStream stuff gets changed, etc.
This of course would make my FilesystemEx module obsolete, given that they'd both have essentially the same API.
But Anyway, bmx-ng is still a WIP and not ready for "non-hackers" to use yet.


Streaksy(Posted 2014) [#37]
Great news! It can't compile any BMax program at all anymore! I need to roll back to an old MinGW..

My God, this is doing my head in.... Am not blaming anyone, by the way. Maybe myself for not being all brained up.

I know this is one-sided help here but I gotta get this working.. Any ideas? Or alternative methods? I can't persuade any of my C coding friends to make me a DLL that returns file stream handles etc... and even if they did I dunno if ReadBytes could be replicated for BMax's banks...


Streaksy(Posted 2014) [#38]
Brucey...

I don't have a great grasp of MinGW... I just plonk it in C:\MinGW and set a few registry entries up for it, and stuff compiles. I use a lot of MiniB3D and play with the odd other thing like chipmunk physics or whatever, and never had a problem until this.

As for SVN, I'm past that. The problem was Tortoise consistantly bugging out for some reason. (Nothing's ever just straight-forward for me, whatever rig or Windows version I have had)

Without people's insight and patience I'm buggered in this case. I usually solve things on my own, or find workarounds or alternatives. I certainly help more than I ask for help. Just being able to access big files from BMax would remove a giant obstacle for me.

I'm Windows 7 64bit, all the components for this project seem up-to-date... Am I just at a dead-end? Am I scrapping it all?


markcw(Posted 2014) [#39]
I heard that gcc 4.8 is 64 bit only, but I've not tried it...

What you need is a 32 bit version of gcc 4.6 or 4.7 (I have 4.6). Best to try the TDM version of MinGW 4.7 here http://www.blitzmax.com/Community/posts.php?topic=95220

You should test your gcc works on brl.mod or pub.mod before trying something new. You need to make sure the PATH environment variable has C:\MinGW\bin and C:\MinGW\lib (each separated by a ;). For good measure have a user environment variable called "MINGW" pointing to C:\MinGW.

I'm guessing my library files didn't work for you then.


xlsior(Posted 2014) [#40]
Brucey...

I don't have a great grasp of MinGW... I just plonk it in C:\MinGW and set a few registry entries up for it, and stuff compiles


Unfortunately, there's actually more to it than that -- you also need to copy ar.exe and ld.exe from MinGw into your Blitz/bin folder, AND you need to overwrite a bunch of the libraries in your blitzmax/lib folder with newer versions that are part of the MinGW/lib install.

Skipping those steps will cause a ton of problems because you end up mixing and matching multiple minGW releases, and you'll be missing includes, functionality, etc.

Here's an old post from Derron with a batch file you can run that will automagically grab all the necessary MinGW files and plonk them into your blitzmax folder:

http://www.blitzbasic.com/Community/post.php?topic=100077&post=1178890

Note that you'll have to change the versions & paths to match yours, but after that you can run it and it will copy all the necessary files.
After copying the libraries, you will need to recompile ALL existing modules before you'll be able to reliably compile anything else.


zoqfotpik(Posted 2014) [#41]
Nah, I was thinking French or something

At this point I'm thinking even Mandarin might be easier.

Someone (Brucey?) was asking why people don't like external DLLs. This sort of thing is why. Not that this is necessarily a representative example but this sort of compiler hell was a large part of why I went to Blitzmax in favor of C. I like programming but I do not like messing with compiler dependencies.

Streaky, can I ask what you're trying to do?


markcw(Posted 2014) [#42]
@xlsior, thanks. I didn't know that. I don't use Windows much but when I have compiled it has worked so maybe I just have the right version of gcc.

I am wondering, can you not simplify that by simply copying ar and ld to BMax/bin and then simply deleting all BMax/lib to force it to use MinGW/lib?


Streaksy(Posted 2014) [#43]
I installed the MinGW version described at:
http://www.blitzmax.com/Community/posts.php?topic=95220

The batch file didn't work. It doesn't understand the "%%i" stuff and just tries to do everything verbatum. Told yer nothing's simple for me. I looked at the BAT code and figured you have to replace the BMax\lib files with the matching ones in MinGW\lib and MinGW\lib\gcc\mingw32\<version>\... Right? And same for ar.exe and ld.exe in the bin subdirs.

The result is that the modules appear to build without error but compiling/running any BMax program gives a bunch of errors.

I tried removing the boost and filesystemex mods, rebuilt modules with this MinGW setup, and even an empty Bmax program won't compile&run and gives the same complaints.

Looking at the errors...

--------------------

C:/Progam Files 2/MaxIde/lib/libgcc.a(unwind-sjlj.o): In function `_gthread_key_create':
c:\crossdev\build\gcc-tdm32\mingw32\libgcc/./gthr-default.h:589: undefined reference to `__mingwthr_key_dtor'
C:/Progam Files 2/MaxIde/lib/libgcc.a(gthr-win32.o): In function `_gthr_win32_key_create':
c:\crossdev\build\gcc-tdm32\mingw32\libgcc/../../../../src/gcc-4.7.1/libgcc/config/i386/gthr-win32.c:113: undefined reference to `__mingwthr_key_dtor'

--------------------

Where's it getting c:\crossdev from?! I searched the registry incase a path needed setting, and couldn't find the word "crossdev". I double-checked the path env-variables... What the...?


Streaksy(Posted 2014) [#44]
munch: Just tried it. It cries for missing libs and passes out.


Streaksy(Posted 2014) [#45]
Okay, everyone, I think it's quitting time.

Thanks for your patience and tips. At least this has all forced me to get a clearer picture of "compiler dependencies" in general. Another few hundred obstacley learning experiences like this and I might aquire a bit of competence. :D

Can I ask why FileSystemEx requires boost anyway? I guess that means that FileSystem itself can't be easily adapted then?

I have a plan B, I suppose, but it involves the world's clunkiest, time-consumingest, embarrassingest workaround in history. Would be nice to fix this but I think I have to just accept it as a major production limit. ;/


markcw(Posted 2014) [#46]
I just tried properly there and I wasn't able to run filesystemex either. I tried my library files I uploaded to bah.filesystemex-static.zip and they didn't work, so I'll have to apologize for that.

I did an install of tdm mingw 4.7 and it didn't work *until* I did the batch file. The gotcha here was you've to give it the file extension .bat or it won't run in cmd. Then it prints:
 1 files copied 
100% copied      1 files copied
The system cannot find the file specified
etc...

I wasn't sure about that error message but it seems nothing to worry about as filesystemex now works, probably not all files in BMax/lib are in MinGW/lib.


Streaksy(Posted 2014) [#47]
I've tried it with everything from the mingw's lib in bmax's lib... recursive folders AND individual files coped to lib itself just incase. Didn't change anything. ;/

I'm 34, and I used DOS from 1994 til like 1999, so I know about bat files. I took the @ from the start of the commands so I could see what it was doing and it was like "can't find c:\programz\biltz\lib\%1" instead of replacing the token. Anyways... I've had to scour everything off and reinstall my versions that work so I can code again. *shrug*


markcw(Posted 2014) [#48]
One more suggestion, don't install BMax to Program Files as the batch can't cope with spaces in the path.


Streaksy(Posted 2014) [#49]
Yeh, the bat was more functional but end result the same ;/


markcw(Posted 2014) [#50]
Maybe try a reinstall of BMax. Something may be borked.


Derron(Posted 2014) [#51]
The Batch file flawlessly works with paths containing spaces
BUT
you will have to encode your paths correctly "C:\Program\ Files" etc.

Or just adjust it using some quotation marks.

errors when copying: it is because it does this:
- look what files "blitzmax\lib" contains - and then try to copy these files from MINGW to blitzmax\lib (instead of just copying all files from mingw to blitz even if not needed).

If the batch file produces errors in your case @ streaksy, you should use your dos knowledge to fix it for your OS (which is ... ?).

- copy libs
- copy ar.exe / ld.exe
- rebuild ALL modules ("bmk.exe makemods -a")
- check if your testcodes are recompiled (disable quickbuild).


@__mingwthr_key_dtor ...

- open commando prompt ("start - run - cmd")
- go into your BlitzMax\bin directory
- run "gcc -v" there and poste here what the response was

Even if you said it said "4.8.1" it seems you code contains still code of the 3.x version. As Brucey uses "4.7.1" you will have to try it with 4.7.1 first, before updating to 4.8.1. First make it work, then toy around with it.


So:
a) there is some trouble on your OS with concurrent MinGW installations
or
b) you did not recompile ALL modules as said
please go into your BlitzMax\bin directory

I think it is b) - except you have multiple GCCs installed and bmk has some trouble running the correct one. Such things might happen, if you have an environment variable set (check your OS for this... it is printed next to the "path"-textarea).

you might check
echo MINGW
if there is an environment variable set for this name


@c:\crosscompile

This is something from the TDM-build. So think of it like a statically set string.



So in short:
- move all modules except "brl.mod" and "pub.mod" from your BlitzMax\mod into something like BlitZMax\mod2 - so you remove potential errors stopping the module compilation (which then results in some new module compilates and some old)
- copy again the libs from your MinGW path (of course your URI should be at first checked to be valid), copy ar.exe, ld.exe too
- go into your BlitzMax\bin
- check if "gcc -v" returns a proper 4.7.1 version
- run "bmk makemods -a" (to recompile all modules)

- it should compile successfully ... compile a simple sample to test
- move back your modules from "mod2" and do a recompile for them too ("bmk makemods" to just recompile the missing ones - or just again with "-a" to do all again).


bye
Ron


zoqfotpik(Posted 2014) [#52]
Streaksy: So you're just a little shaver then. Don't worry, things like this will get a little bit easier as you become more experienced (but not much).

I'm still interested in what you're trying to do.