• Print

Author Topic: 'exe files produced by QB64 do work in Windows 98' is a lie!!!  (Read 611 times)

Jobert14

  • Full Member
  • ***
  • Posts: 232
  • BAHHH!!!
    • Email
'exe files produced by QB64 do work in Windows 98' is a lie!!!
« on: January 07, 2013, 05:34:09 AM »
When I try to run a very simple QB64 program in Win98SE, I get the following message:
Code: [Select]
The LIBSTDC++6.DLL file is linked to missing export MSVCRT.DLL-___lc_codepage_func.

I then replaced the DLL file with a newer one thus, I get an error about NTDLL.DLL which is missing RtlGetNtVersionNumbers then Windows bombs to a stop error. I changed that with a newer version of NTDLL.DLL and get a 'NTDLL.DLL expects a newer version of Windows' error then bombs to a stop error again.

I suspect an absolute dead 0% percent chance of getting a Hello World program written in QB64 to work in Windows 98SE at all. I've tried using KernelEx and still didn't work...I'm not sure if QB64 compiled exes will work in WinME and I suspect that it'll work in Win2K.
The C.E.O guy of Meido-Tek Productions (please warn me if this name is already taken).

Clippy

  • Hero Member
  • *****
  • Posts: 16431
  • I LOVE π = 4 * ATN(1)    Use the QB64 WIKI >>>
    • Pete's Qbasic Site
    • Email
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #1 on: January 07, 2013, 08:15:05 AM »
QB64 used to work in Windows 98 and ME, but eventually became incompatible. Those operating systems can use Qbasic so no effort has been made to fix compatibility.
QB64 WIKI: Main Page
Download Q-Basics Code Demo: Q-Basics.zip
Download QB64 BAT, IconAdder and VBS shortcuts: QB64BAT.zip
Download QB64 DLL files in a ZIP: Program64.zip

Pete

  • Moderator
  • Hero Member
  • *****
  • Posts: 6240
  • Cuz I sez so varmint!
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #2 on: January 07, 2013, 08:34:35 AM »
QB64 development a few years ago made it necessary to abandon Win 3.1 to ME compatibility. XP, 2000, Vista, Win7 and Win8 are all supported. Nice try with KernelEx though. I got some extra mileage out of my Window 98SE with that addition, too, but not for QB64.

I'm amazed Rob has been able to support other platforms outside of Windows for this project, and juggle a new non-SDL version, with the goal of going QB64 mobile. I know he had to face some tough decisions along the way, and I'm sure giving up on older operating systems was one of them. Still,the goal was to keep QB coding alive on new systems, which was accomplished, and that's the truth.

Pete
It's only rocket science; it's not Linux!

Clippy

  • Hero Member
  • *****
  • Posts: 16431
  • I LOVE π = 4 * ATN(1)    Use the QB64 WIKI >>>
    • Pete's Qbasic Site
    • Email
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #3 on: January 07, 2013, 08:38:29 AM »
You may be able to run some QB64 programs that don't require a lot of QB64 keywords on 98. Compile them on an XP or newer and try it.
QB64 WIKI: Main Page
Download Q-Basics Code Demo: Q-Basics.zip
Download QB64 BAT, IconAdder and VBS shortcuts: QB64BAT.zip
Download QB64 DLL files in a ZIP: Program64.zip

mn64

  • Full Member
  • ***
  • Posts: 184
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #4 on: January 07, 2013, 09:13:27 AM »
Quote from: Clippy on January 07, 2013, 08:38:29 AM
You may be able to run some QB64 programs that don't require a lot of QB64 keywords on 98. Compile them on an XP or newer and try it.

odds are probably better of it running on reactos, which like the other versions of windows that qb64 requires, uses the nt kernel.

i do worry about the possibility that qb64 will tend to require more recent os/library versions, but this isn't about age, it's about architecture. the nt kernel is fundamentally different from 98 and previous.

12-14 years of backwards support is a very good start. i recently found a pentium ii that had 98 on it, and less than 100 megs of ram, so i was amazed to get anything modern installed on it. it runs x, it runs python, and i might even be able to get it to run qb64. i wouldn't try to put xp on it though, even if xp were free and open source. the swap would lift it up like a boxy ufo.

HACKER

  • Limited Member
  • Hero Member
  • *
  • Posts: 761
    • Email
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #5 on: January 07, 2013, 09:17:55 AM »
Hi Jobert14...

Why dont You Install Linux on Your Computer and Run Your Programs in Wine!

Wine Info!...

http://www.winehq.org

You Will then have a Dual Boot System for Either Windows 98 or Linux!

The Linux Below is Very much like Windows!

http://distrowatch.com/table.php?distribution=zorin

Check out the Look-Changer Below for Different Windows + Desktop OS looks!

http://zorin-os.webs.com/lookchanger.htm

Windows 7
Windows Vista
Windows XP
Windows 2000
Mac OS X
Linux's GNOME interface


H.

iamdenteddisk

  • Hero Member
  • *****
  • Posts: 2737
    • Email
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #6 on: January 07, 2013, 10:22:24 AM »
find member Dav, he continued to hatch backward compatible versions and compile a few past where compatibility stopped for the public. ;)


HACKER

  • Limited Member
  • Hero Member
  • *
  • Posts: 761
    • Email
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #7 on: January 07, 2013, 12:36:14 PM »
Here are Some Screen Shots!

http://www.zorin-os.com/gallery.html


H.

DSMan195276

  • Hero Member
  • *****
  • Posts: 1978
  • Yes
    • Email
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #8 on: January 07, 2013, 06:21:20 PM »
I don't know your entire situation, and I realize others have recommended Linux. I'd like to recommend trying out Puppy Linux 5.2.8 though. I'd be happy to help you get it going, it's fairly simple (Puppy was one of the first Linux's I used when I just started to use it). The reason I note Puppy is that the distro can be installed onto a computer without requiring repartitioning. It can also be very easily installed onto a bootable USB drive to run your programs entirly from the USB without touching the HDD of the computer. I ran 5.2.8 (Which is a fairly recent release) On a computer with a 400Mhz processor and 127 MB of RAM completely off of my USB drive. I originally had that computer hosing my chat server for a while, It's about as light as it gets and it still runs QB64 fairly well. I wrote instructions for setting up QB64 on it, and I'd be happy to help you with making a bootable USB and installing QB64 if you'd like to try it.

Matt
"Cast your cares on the Lord and he will sustain you; he will never let the righteous be shaken" -- Psalm 55:22
QB64 Linux Installer

Clippy

  • Hero Member
  • *****
  • Posts: 16431
  • I LOVE π = 4 * ATN(1)    Use the QB64 WIKI >>>
    • Pete's Qbasic Site
    • Email
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #9 on: January 07, 2013, 07:09:48 PM »
Don't forget to feed that Puppy...  :D
QB64 WIKI: Main Page
Download Q-Basics Code Demo: Q-Basics.zip
Download QB64 BAT, IconAdder and VBS shortcuts: QB64BAT.zip
Download QB64 DLL files in a ZIP: Program64.zip

mcalkins

  • Hero Member
  • *****
  • Posts: 1269
    • qbasicmichael.com
    • Email
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #10 on: January 07, 2013, 07:32:17 PM »
Jobert, several things: QB64 for Windows officially only supports XP and later.

With one or two tweaks, it can work on 2000. For this, the GL version is better.

(The API documentation that I have is for Windows 2000 and later. It is incomplete for earlier versions of Windows, so, I don't know which functions are available on 98.)

Quote
The LIBSTDC++6.DLL file is linked to missing export MSVCRT.DLL-___lc_codepage_func.

libstdc++-6.dll is the C++ Standard Library DLL for mingw-w32.

The ___lc_codepage_func problem was 1 of the 2 things that was preventing QB64 0.954 from working on Windows 2000. The best solution is to use a newer version of mingw. QB64 GLv3 0.960 comes with a newer version of mingw-w32 which does not have the ___lc_codepage_func problem.

The other problem on Windows 2000 was GetConsoleProcessList. See the topic: http://www.qb64.net/forum/index.php?topic=6744.0

Whether Windows 98 will have additional problems, I don't know. Note that Windows 98 does not support Unicode.

Quote
I then replaced the DLL file with a newer one thus, I get an error about NTDLL.DLL which is missing RtlGetNtVersionNumbers then Windows bombs to a stop error. I changed that with a newer version of NTDLL.DLL and get a 'NTDLL.DLL expects a newer version of Windows' error then bombs to a stop error again.

msvcrt.dll is the C Runtime Library DLL for Visual C++. On versions of Windows before 2000, it was expected that applications would install msvcrt.dll themselves. Starting with Windows 2000, msvcrt.dll is a "known DLL", a fundamental part of the operating system. Different versions of Windows have different versions of msvcrt.dll, based on the Visual C++ that was current at the time. Applications compiled with newer versions of Visual C++ will use numbered versions of msvcr##.dll and msvcp##.dll in their own folder, or in the winsxs folder.

ntdll.dll is the NT Native API DLL. It is a critical part of the Windows NT operating system. I don't think that it is used on Windows 9x. It is always specific to your Windows version. Whereas higher level libraries like kernel32.dll present backward compatible APIs, ntdll.dll's interface is subject to change from version to version. ntdll.dll is one layer below kernel32.dll. It calls into the NT kernel with either syscall, sysenter, or int 0x2e (depending on the CPU).

Quote
I suspect an absolute dead 0% percent chance of getting a Hello World program written in QB64 to work in Windows 98SE at all.

I suggest that you might give it a try with the GL version 0.960. You'll probably need to fix the GetConsoleProcessList thing in libqbx.cpp. (You'll probably need to recompile qb64.bas using the modified libqbx.cpp on an XP computer.)

There might be additional hurdles, but you won't know until you try.

(My exploration of QB64 on 2000 built on previous work from Dav and Galleon.)

Quote from: mn64 on January 07, 2013, 09:13:27 AM
odds are probably better of it running on reactos, which like the other versions of windows that qb64 requires, uses the nt kernel.

i do worry about the possibility that qb64 will tend to require more recent os/library versions, but this isn't about age, it's about architecture. the nt kernel is fundamentally different from 98 and previous.

12-14 years of backwards support is a very good start. i recently found a pentium ii that had 98 on it, and less than 100 megs of ram, so i was amazed to get anything modern installed on it. it runs x, it runs python, and i might even be able to get it to run qb64. i wouldn't try to put xp on it though, even if xp were free and open source. the swap would lift it up like a boxy ufo.

Yes, QB64 should work with ReactOS. While the kernel type might be an issue, I think that it's mainly the newer API. Some kernel architecture differences are reflected in the API.

I hope that you have fun with the Pentium II, but I would suggest a RAM upgrade, if possible.

Regards,
Michael

P.S. If you really want to use QB64 0.954 instead of GL, you can upgrade to a newer version of mingw-w32. See: http://www.qb64.net/forum/index.php?topic=5573.msg69098#msg69098

P.S.
http://en.wikipedia.org/wiki/Native_API
http://en.wikipedia.org/wiki/Microsoft_Windows_library_files
« Last Edit: January 07, 2013, 07:50:30 PM by mcalkins »
The QBASIC Forum Community: http://www.network54.com/index/10167 Includes off-topic subforums.
QB64 Off-topic subforum: http://qb64offtopic.freeforums.org/

mcalkins

  • Hero Member
  • *****
  • Posts: 1269
    • qbasicmichael.com
    • Email
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #11 on: January 08, 2013, 02:30:23 PM »
In addition to the previous post...

For the ____lc_codepage_func problem:

A third option (in addition to using 0.960 or upgrading the mingw of 0.954) that should work for 98, but not for 2000, is this: Copy either msvcr70.dll, msvcr71.dll, or msvcr80.dll to your QB64 folder, and rename it to msvcrt.dll. This will not work on Windows 2000, because msvcrt.dll is "known" on 2000 and later, and cannot be overridden.

Note that the redistributable ones like msvcr71.dll do not directly depend on ntdll.dll, whereas the Windows component msvcrt.dll (on 2000 and later) does directly depend on ntdll.dll. You can use the Dependency Walker to explore DLL dependencies.

For the GetConsoleProcessList problem:

The code samples in:
http://www.qb64.net/forum/index.php?topic=5573.msg69098#msg69098
http://www.qb64.net/forum/index.php?topic=6744.0
probably won't work as-is on 98.

hKernel32 = LoadLibraryW(L"kernel32.dll")
would need to be changed to:
hKernel32 = LoadLibrary("kernel32.dll")

GetConsoleTitleA
might need to be changed to:
GetConsoleTitle

I don't know if the ToolHelp32 functions in the "Parent's file name method" would work on 98.

Regards,
Michael
The QBASIC Forum Community: http://www.network54.com/index/10167 Includes off-topic subforums.
QB64 Off-topic subforum: http://qb64offtopic.freeforums.org/

Clippy

  • Hero Member
  • *****
  • Posts: 16431
  • I LOVE π = 4 * ATN(1)    Use the QB64 WIKI >>>
    • Pete's Qbasic Site
    • Email
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #12 on: January 08, 2013, 02:36:04 PM »
Quote
Copy either msvcr70.dll, msvcr71.dll, or msvcr80.dll to your QB64 folder, and rename it to msvcrt.dl

Copy them from where? The Windows System folder in 98? I wouldn't want to get them off of the web.
QB64 WIKI: Main Page
Download Q-Basics Code Demo: Q-Basics.zip
Download QB64 BAT, IconAdder and VBS shortcuts: QB64BAT.zip
Download QB64 DLL files in a ZIP: Program64.zip

mcalkins

  • Hero Member
  • *****
  • Posts: 1269
    • qbasicmichael.com
    • Email
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #13 on: January 08, 2013, 03:21:31 PM »
Quote
Copy them from where? The Windows System folder in 98? I wouldn't want to get them off of the web.

Either Windows\system32 or subfolders of Windows\winsxs. It shouldn't have to be from the 98 computer. I'm not aware that there would be any difference between msvcr71.dll for an XP computer vs. for a 98 computer.

I'm not sure that my suggestions above are strictly okay with the Microsoft licenses. It probably won't matter unless you plan on distributing to other people.

VC++ version 8.0 (VC++ 2005) was the last to target 98.

You can download the Visual C++ 2005 RTM Redistributable installer: http://www.microsoft.com/en-us/download/details.aspx?id=3387

See http://msdn.microsoft.com/en-us/library/vstudio/ms235299(v=vs.80).aspx for tips.

QB64 programs do not use manifests, but I don't think that it would a problem on 98.  (My old instructions (for 0.953) on page 1 of http://www.qb64.net/forum/index.php?topic=5573.0 involved copying msvcr80.dll to the QB64 folder, renaming it to zsvcrt.dll, and then editing the .idata section of libstdc++-6.dll to match. (Renaming with the z was to get around the inability to override known DLLs, but using a filename of the same length to allow easy hacking of the executable.) But, since it worked, I conclude that the lack of a manifest would not be a problem in 2000 and earlier.)

Regards,
Michael
« Last Edit: January 08, 2013, 03:33:49 PM by mcalkins »
The QBASIC Forum Community: http://www.network54.com/index/10167 Includes off-topic subforums.
QB64 Off-topic subforum: http://qb64offtopic.freeforums.org/

Clippy

  • Hero Member
  • *****
  • Posts: 16431
  • I LOVE π = 4 * ATN(1)    Use the QB64 WIKI >>>
    • Pete's Qbasic Site
    • Email
Re: 'exe files produced by QB64 do work in Windows 98' is a lie!!!
« Reply #14 on: January 08, 2013, 03:31:28 PM »
How many msvcr files are there? Which one is best? I'll give it a shot...my 98 looks bored.  ;)
QB64 WIKI: Main Page
Download Q-Basics Code Demo: Q-Basics.zip
Download QB64 BAT, IconAdder and VBS shortcuts: QB64BAT.zip
Download QB64 DLL files in a ZIP: Program64.zip

  • Print