Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 5995481
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 22, 20262026-05-22T23:57:57+00:00 2026-05-22T23:57:57+00:00

The question is pretty much in the title: in terms of OS-level implementation, how

  • 0

The question is pretty much in the title: in terms of OS-level implementation, how are shared objects and dlls different?

The reason I ask this is because I recently read this page on extending Python, which states:

Unix and Windows use completely different paradigms for run-time loading of code. Before you try to build a module that can be dynamically loaded, be aware of how your system works.

In Unix, a shared object (.so) file contains code to be used by the program, and also the names of functions and data that it expects to find in the program. When the file is joined to the program, all references to those functions and data in the file’s code are changed to point to the actual locations in the program where the functions and data are placed in memory. This is basically a link operation.

In Windows, a dynamic-link library (.dll) file has no dangling references. Instead, an access to functions or data goes through a lookup table. So the DLL code does not have to be fixed up at runtime to refer to the program’s memory; instead, the code already uses the DLL’s lookup table, and the lookup table is modified at runtime to point to the functions and data.

Could anyone elaborate on that? Specifically I’m not sure I understand the description of shared objects containing references to what they expect to find. Similarly, a DLL sounds like pretty much the same mechanism to me.

Is this a complete explanation of what is going on? Are there better ones? Is there in fact any difference?

I am aware of how to link to a DLL or shared object and a couple of mechanisms (.def listings, dllexport/dllimport) for writing DLLs so I’m explicitly not looking for a how to on those areas; I’m more intrigued as to what is going on in the background.

(Edit: another obvious point – I’m aware they work on different platforms, use different file types (ELF vs PE), are ABI-incompatible etc…)

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-22T23:57:58+00:00Added an answer on May 22, 2026 at 11:57 pm

    A Dll is pretty much the same mechanism as used by .so or .dylib (MacOS) files, so it is very hard to explain exactly what the differences are.

    The core difference is in what is visible by default from each type of file. .so files export the language (gcc) level linkage – which means that (by default) all C & c++ symbols that are “extern” are available for linking when .so’s are pulled in.
    It also means that, as resolving .so files is essentially a link step, the loader doesn’t care which .so file a symbol comes from. It just searches the specified .so files in some order following the usual link step rules that .a files adhere to.

    Dll files on the other hand are an Operating system feature, completely separate to the link step of the language. MSVC uses .lib files for linking both static, and dynamic libraries (each dll file generates a paired .lib file that is used for linking) so the resulting program is fully “linked” (from a language centric point of view) once its built.

    During the link stage however, symbols were resolved in the lib’s that represents the Dlls, allowing the linker to build the import table in the PE file containing an explicit list of dlls and the entry points referenced in each dll. At load time, Windows does not have to perform a “link” to resolving symbols from shared libraries: That step was already done – the windows loader just loads up the dll’s and hooks up the functions directly.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I only ask this question because I have isolated it to pretty much three
The title pretty much describes my entire question. Because right now I'm wondering if
Ok, so I think the title of this question pretty much sums it up.
The question is pretty much in the title, but I will elaborate. I have
The title of the question pretty much states the problem. Is it possible?
The title pretty much asks the whole question - How can I clear ONLY
Well the title pretty much sums the question. The only thing I found is
This question does pretty much what I want to accomplish, but my table is
Pretty much the same as this question. But I can't seem to get this
The question is pretty much the title. I have a 3d volume loaded as

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.