Comparison between Windows dynamic library and Linux shared objects

Source: Internet
Author: User
Comparison of Windows dynamic library and Linux shared object-Linux general technology-Linux programming and kernel information. The following is a detailed description. Abstract: The concept of dynamic library exists in Windows and Linux systems. Dynamic library can effectively reduce the program size and save space, improve efficiency, increase program scalability, and facilitate modular management. However, because the dynamic libraries of different operating systems have different formats, dynamic library programs need to be transplanted when calling different operating systems. This article analyzes and compares the two types of dynamic operating system library technology, and provides the methods and experience of porting the dynamic library compiled by Visual C ++ to Linux.

1 Introduction

Dynamic Library (DLL) is a frequently used technology in programming. It aims to reduce the program size, save space, improve efficiency, and have high flexibility. It is easier to upgrade the software version by using the dynamic library technology. Unlike Static Link Library, functions in the dynamic Library are not part of the execution program, but loaded as needed, its Execution Code can be shared among multiple programs at the same time.

This method can be used in both Windows and Linux operating systems for software design, but their calling methods and programming methods are different. This article first analyzes the dynamic library calling methods and programming methods commonly used in these two operating systems, and then analyzes and compares the differences between the two methods, finally, based on the actual porting experience, this article introduces how to port the Windows dynamic library compiled by VC ++ to Linux.

2. Dynamic library technology

2.1 Windows dynamic library technology

Dynamic Link Library is an important technical means for Windows applications to share resources, save memory space, and improve usage efficiency. Common dynamic libraries include external functions and resources, and some dynamic libraries only contain resources, such as Windows Font Resource files, which are called resource dynamic link libraries. Generally, the dynamic library uses. dll,. drv,. fon, and so on as the suffix. The corresponding windows static library usually ends with. lib, and Windows itself implements some major system functions in the form of dynamic library modules.

The Windows dynamic library is loaded into the virtual space of the process at runtime, and the memory allocated from the virtual address space of the calling process becomes part of the calling process. DLL can only be accessed by the thread of the process. The DLL handle can be used by the calling process, and the call Process Handle can be used by the DLL. The DLL module contains various export functions to provide external services. A dll can have its own data segment but does not have its own stack. It uses the same stack mode as the application that calls it. a dll has only one instance in the memory; DLL implements code encapsulation. The compilation of DLL has nothing to do with the specific programming language and compiler. You can use DLL to implement mixed language programming. Any object (including variables) created by the code in the DLL function is owned by the thread or process that calls it.

Based on different call methods, dynamic library calls can be divided into static call methods and dynamic call methods.

(1) Static call, also known as implicit call, is the encoding used by the compilation system to load the DLL and uninstall the DLL when the application ends (the Windows system is responsible for counting the number of DLL calls ), the call method is simple and can meet common requirements. The call method is usually to add the. LIB file generated when a dynamic Connection Library is generated to the project of the application. To use a function in the DLL, you only need to declare it in the source file. The LIB file contains the symbolic name and selectable Identification Number of each DLL export function and the DLL file name, excluding the actual code. The information contained in the Lib file enters the generated application. The called DLL file is loaded into the memory when the application is loaded.

(2) Dynamic calling, that is, the explicit calling method, is implemented by the programmer using the API function to load and uninstall the DLL to call the DLL. It is complicated, but can use the memory more effectively, is an important way to compile large-scale applications. In Windows, functions related to dynamic library calls include:

① LoadLibrary (or AfxLoadLibrary of MFC) to load dynamic libraries.

② GetProcAddress: Get the function to be introduced and convert the symbol name or ID number to the internal DLL address.

③ FreeLibrary (or AfxFreeLibrary of MFC) to release the dynamic link library.

Creating a dynamic library in windows is also very convenient and simple. In Visual C ++, you can create a DLL program directly written in C language without using MFC, or create a DLL program based on the MFC class library. Each DLL must have an entry point. In VC ++, DllMain is a default entry function. DllMain is responsible for Initialization and Termination. The dynamic library output function also has two conventions, which are based on the call Convention and name modification convention. The functions defined by the DLL program are divided into internal functions and export functions. The functions exported by the dynamic library are called by other program modules. You can use the following methods to export functions:

① Use the EXPORT part of the module definition file to specify the function or variable to be input.

② Use the modifier _ declspec (dllexport) provided by MFC ).

③ Use the/EXPORT command line to output related functions in the command line mode.

In a windows dynamic library, you sometimes need to write a module definition file (. DEF), which is a text file consisting of module statements used to describe the DLL attributes.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.