x
This website is using cookies. We use cookies to ensure that we give you the best experience on our website. More info. That's Fine
HPC:Factor Logo 
 
Latest Forum Activity

FOUND! Original Flash 4 Installers from Macromedia

1 2
cmonex Page Icon Posted 2005-07-06 8:57 PM
#
Avatar image of cmonex
H/PC Oracle

Posts:
16,175
Location:
Budapest, Hungary
Status:
Snappy! - 2005-07-07 1:28 AM

And may I add that ActiveX objects belong to the class of COM/COM+ objects. Its a special class in that it displays a UI while COM objects includes those that do and don't.

COM objects were designed to make it easier to let VB and C++ apps interop(erate), ie VB apps using C++ COM objects and C++ apps using VB COM objects. It was also meant to remove DLL hell.

And further up that hierachy (if you are still with me), COM objects form a special class of DLL (Dynamically Linked Libraries) in that it always contain Function pointer "IUnknown" with-which the COM client app use to query for the exposed methods. This is vs the traditional retrieving of the function pointers via names, which do not define the interface itself, lending to the DLL hell.

DLL in the grand scheme of things, belong to a special category of binary, alongside with EXE(cutables). The diff being that DLLs expose function pointers, while EXEs do not and vary slightly in format for DOS and windows in terms of the program loader header/pointer segment.

ok ok ... I'm so off thread by now! ... this show go into Developers column! hehe


wow!
interesting really!
hmm.. what is dll hell?

C:Amie is right, you SHOULD write an article on it!
 Top of the page
matrixcore Page Icon Posted 2005-07-06 9:58 PM
#
Avatar image of matrixcore
H/PC Elite

Posts:
627
Location:
The Matrix
Status:
Windows programs share a lot of code so, to avoid wasting disk space, the solution was simple (apparently), create code "containers" (the libraries), which had code that may be reused across various applications. but, as everything, DLL's (dll means dynamic link library) have different versions, even if they're called the same way (for example, commdlg.dll which exists across all windows versions since 95, but it's different for each one). In the old times, and even in the modern ones, there is no 100% reliable mechanism to make sure the DLL a program is trying to load is the DLL that the program is designed to use, and not an incompatible version. so DLL hell (also referred as a SNAFU) is a situation where you have a DLL which is incompatible with the program that is trying to use it, and it fails miserably. happens for example, when you install program A that uses version 1.2.3 of library "foo.dll", then, program B overwrites "foo.dll" with version 0.9.6, which then renders program A inoperable.

That was a long explanation. but i hope it was clear
 Top of the page
cmonex Page Icon Posted 2005-07-07 3:04 AM
#
Avatar image of cmonex
H/PC Oracle

Posts:
16,175
Location:
Budapest, Hungary
Status:
yes it was clear, thanks!
 Top of the page
Snappy! Page Icon Posted 2005-07-07 8:47 AM
#
Avatar image of Snappy!
H/PC Elder

Posts:
1,712
Location:
New Mexico, US
Status:
C:Amie - 2005-07-06 6:23 PM

I think you just committed yourself to writing an editorial on DLL / COM for beginners


 Top of the page
Snappy! Page Icon Posted 2005-07-07 9:02 AM
#
Avatar image of Snappy!
H/PC Elder

Posts:
1,712
Location:
New Mexico, US
Status:
matrixcore - 2005-07-06 7:58 PM

Windows programs share a lot of code so, to avoid wasting disk space, the solution was simple (apparently), create code "containers" (the libraries), which had code that may be reused across various applications. but, as everything, DLL's (dll means dynamic link library) have different versions, even if they're called the same way (for example, commdlg.dll which exists across all windows versions since 95, but it's different for each one). In the old times, and even in the modern ones, there is no 100% reliable mechanism to make sure the DLL a program is trying to load is the DLL that the program is designed to use, and not an incompatible version. so DLL hell (also referred as a SNAFU) is a situation where you have a DLL which is incompatible with the program that is trying to use it, and it fails miserably. happens for example, when you install program A that uses version 1.2.3 of library "foo.dll", then, program B overwrites "foo.dll" with version 0.9.6, which then renders program A inoperable.

That was a long explanation. but i hope it was clear


I couldn't have explained it better myself!

To add to the existence of DLLs, it was mostly to tackle the problem of limited memory back in the early days ... think 4MB 386SX/DX PCs or even 1MB 286AT PCs ... Windows 3.0 (or earlier) started off with the DLL thingie so that more apps can run at the same time without taking up precious memory estate by sharing code in the form of DLLs.

In the DOS days, only *one* app run at a time, so an app had access to *ALL* possible memory, 640KB, the 384KB upper memory, extended mem, expanded mem, whatever ... ...

To round up what I veered off with this DLL thingie, DLLs can also be static libraries. They differ from Dynamically loaded libraries in that when an app is run, it is loaded at program load time, whereas Dynamically loaded libraries are (well) loaded dynamically, ie as and when the programs need the specific function found in that library. Dyn libs can also be unloaded when not in use. So a properly written app can make use of minimal memory footprint whereas a lazy app will simply load everything other thing even if it is only used once.

At the end, its almost always a constant balance between speed vs memory usage.
 Top of the page
1 2
Jump to forum:
Seconds to generate: 0.171 - Cached queries : 63 - Executed queries : 8