Visual Basic Classic
--
Questions
--
Followers
Top Experts
I am grateful for the guidance I have received thus far but I think one part was incorrect.
I was told that I should distribute my VB application with all of the most recent xxxxxx.dll files. After reading the Microsoft article ID 830761 it appears that the strategy is to first look in the VS6 ‘redist’ folder for DLLs to distribute then if not found it gets them from the system directory. This means that all redistributable files provided WITH Visual Basic 6 for redistribution should be used. If the dll / ocx files required to include are not supplied by Visual Studio then they are selected from the System32 directory.
PLEASE answer this question only if you KNOW the answer.
Are VB applications compiled using the dll’s in the system32 directory(most likely) or from the Visual Studio redist directory (less likely I think)?
SO, if the compiled .exe program uses the system32 DLL’s, am I REALL OK distributing the older DLL’s with it? I am an embedded systems engineer so this windows magic seem odd. Does the linker really know where to call the functions / objects in the DLL or is it handled with some win magic that I don’t have to worry about (i.e. run time binding or some other form of DLL management)
This would mean that I package my freshly compiled EXE with the following dll’s from VS6 SP6 redist folder.
These files are from the redist folder (in my case)
C:\Program Files\Microsoft Visual Studio\VB98\Wizards\PDWiza
ALL OF THESE FILES ARE OLDER than the current system32 dll’s on my machine.
Asycfilt.dll 2.40.4275.1 144 KB (147,728 bytes)
Comcat.dll 4.71.1460.1 21.7 KB (22,288 bytes)
Msvbvm60.dll 6.0.97.82 1.32 MB (1,386,496 bytes)
Oleaut32.dll 2.40.4275.1 584 KB (598,288 bytes)
Olepro32.dll 5.0.4275.1 160 KB (164,112 bytes)
Stdole2.tlb 2.40.4275.1 17.5 KB (17,920 bytes)
And according to Microsoft article ID 197580, I should also use (from the same folder) the
RICHED32.DLL 4.0.993.4 174,352 bytes
However, I also need to distribute the following ocx’s with my application…
Richtx32.ocx
Mscomctl.ocx
Mscomm32.ocx
Comctl32.ocx
Comdlg32.ocx
I can only find these ocx’s in the active system directory C:\WINDOWS\system32 directory.
(Note: ALL of the above files are on the Microsoft ‘OK to redistribute’ list ‘redist.txt’.)
FYI: I ran a test and this, in fact, appears to be the scenario created by the Packaging and Distribution wizard.
It just seems weird that I am using some older DLL’s included in my distribution package even though I compiled (or so I would think) with the newer ones. By the way,
IF YOU DON’T KNOW please don’t guess! (or at least tell me you are just guessing) I really need an answer from someone who knows if this DLL distribution schema is really correct. And If not, what is…
Thanks
dannyhop
Zero AI Policy
We believe in human intelligence. Our moderation policy strictly prohibits the use of LLM content in our Q&A threads.
You can just open your VBP file in notepad/UltraEdit, then find the lines start with "Object" and "Reference", then you can see what the exact files are.
If the full path of the file is not shown in VBP file, you can search the GUID in registry. For example, if there is a line in VBP file like the following:
Object={67397AA1-7FB1-11D0
Just search "67397AA1-7FB1-11D0-B148-0
Regards,
Jungle
Inside the VBP file with UltraEdit I see these objects... (no Reference=)
Object={3B7C8863-D78F-101B
Object={648A5603-2C6E-101B
Object={6B7E6392-850A-101B
Object={F9043C88-F6F2-101A
Object={831FDD16-0C5C-11D2
Example: When I search for key "648A5603-2C6E-101B-82B6-0
I find
in Registry Key---> TypeLib\{3B7C8863-D78F-101
I see the Value Data: = C:\WINDOWS\system32\COMDLG
This tells me these "Object" files are infact used by the compiler so I should clearly distribute them with my Application.
This answeres half of my question!!! Thank You!
The other half of the question I need answered is...
Which of the VB6 'base dependencies' DLL's are used by the compiler?
There are two ambiguous choices
Choice 1)
These are the file versions distributed with VB6SP6 in the redist folder. (Note: These are also the files the P&D Wizzard chooses )
Asycfilt.dll 2.40.4275.1
Comcat.dll 4.71.1460.1
Msvbvm60.dll 6.0.97.82
Oleaut32.dll 2.40.4275.1
Olepro32.dll 5.0.4275.1
Stdole2.tlb 2.40.4275.1
RICHED32.DLL 4.0.993.4
Choice 2)
These are the versions that exist in my "C:\WINDOWS\System32\" directory.
Asycfilt.dll 5.1.2600.2180
Comcat.dll 5.0.2600.1
Msvbvm60.dll 6.0.97.82 (this one is the same)
Oleaut32.dll 5.1.2600.2180
Olepro32.dll 5.1.2600.2180
Stdole2.tlb etc...
RICHED32.DLL
These two sets of VB dependenciy DLL files have very different versions and I don't see any indicators in the .VBP file (or anywhere else) as to which the VB6 compiler chooses to use.
Any help in solving the remainder of this puzzle?
Thank You!
dannyhop
Take Choice 1)
Those among the 2 looks like OS only files, XP version numbers in them. There is trouble in systems older than XP.
Matti






EARN REWARDS FOR ASKING, ANSWERING, AND MORE.
Earn free swag for participating on the platform.
Thanks!
Most installations in have are WinXP but I do need to be capable of installing this to the older Win98 as well as WinME systems. I still do not understand that this is a definitive answer to:
'Will the older DLL dependency files ALWAYS work, (Win 98, thru Win XP) even if I compiled with the newer files?
I realize this is old stuff but until I port this app over to .Net - Csharp I will need to support this old stuff. I have seen evidence of trouble in older systems with choice 2 but it 'SEEMS' OK with choice 1. I was hoping someone definitively knew how this works in the Win Linking schema.
Thank You,
dannyhop
Redistribute those files which are in the redist folder, You are on safe side.
There is many OS dependency files in NT system (NT 4.0 Win2k XP) which are newer than those on Win98. Installing one of these might trash a Win98 box.
You see whit one look that version 5.1.2600.2180 belongs to XP
>'Will the older DLL dependency files ALWAYS work.....
Normal yes, there is A and W versions of fuctions, so programmer can deside what to use will it work on 9.x or on NT
Matti
I would assume that the default code page for Windows is the old faithful ANSI. Since this application contains no 'Wide' types, (just simple RTF) can I infer by your comment above that ANSI will work on all systems I install if I use choice 1)
Thanks,
Dan

Get a FREE t-shirt when you ask your first question.
We believe in human intelligence. Our moderation policy strictly prohibits the use of LLM content in our Q&A threads.
I have split points. Together you have answered this well.
Thank You,
Dan
Visual Basic Classic
--
Questions
--
Followers
Top Experts
Visual Basic is Microsoft’s event-driven programming language and integrated development environment (IDE) for its Component Object Model (COM) programming model. It is relatively easy to learn and use because of its graphical development features and BASIC heritage. It has been replaced with VB.NET, and is very similar to VBA (Visual Basic for Applications), the programming language for the Microsoft Office product line.