Knowledge (XXG)

Dynamic loading

Source 📝

1396:. However, unloading a DLL can lead to program crashes if objects in the main application refer to memory allocated within the DLL. For example, if a DLL introduces a new class and the DLL is closed, further operations on instances of that class from the main application will likely cause a memory access violation. Likewise, if the DLL introduces a factory function for instantiating dynamically loaded classes, calling or dereferencing that function after the DLL is closed leads to undefined behaviour. 1719:
classes loaded via the system classloader were never unloaded and classes loaded via other classloaders only when this other classloader was unloaded. Starting with Java 6 classes can contain an internal marker indicating to the garbage collector they can be unloaded if the garbage collector desires to do so, independent of the classloader used to load the class. The garbage collector is free to ignore this hint.
1762: 1328:") is common, and explicitly allowed even if strict aliasing is in force, provided the memory is accessed through the union type directly. However, this is not strictly the case here, since the function pointer is copied to be used outside the union. Note that this trick may not work on platforms where the size of data pointers and the size of function pointers is not the same. 1718:
Implicit unloading of classes, i.e. in an uncontrolled way by the garbage collector, has changed a few times in Java. Until Java 1.2. the garbage collector could unload a class whenever it felt it needed the space, independent of which class loader was used to load the class. Starting with Java 1.2
1714:
However, there is no simple way to unload a class in a controlled way. Loaded classes can only be unloaded in a controlled way, i.e. when the programmer wants this to happen, if the classloader used to load the class is not the system class loader, and is itself unloaded. When doing so, various
1336:
The fact remains that any conversion between function and data object pointers has to be regarded as an (inherently non-portable) implementation extension, and that no "correct" way for a direct conversion exists, since in this regard the POSIX and ISO standards contradict each other.
1355:
If the contents of the library can be changed (i.e. in the case of a custom library), in addition to the function itself a pointer to it can be exported. Since a pointer to a function pointer is itself an object pointer, this pointer can always be legally retrieved by call to
1344:
for the outdated issue 6 stated that "a future version may either add a new function to return function pointers, or the current interface may be deprecated in favor of two new functions: one that returns data pointers and the other that returns function pointers".
2179: 159:
loading. Corrections to application programs could be made offline and new copies of changed programs loaded dynamically without needing to restart CICS (which can, and frequently does, run
125:. As far as the application programmer is concerned, the loading is largely transparent, since it is mostly handled by the operating system (or its I/O subsystem). The main advantages are: 1463:
allows programmers to access symbols exported by the main executable. Windows does not use a global symbol table and has no API to search across multiple modules to find a symbol by name.
1080:
This can be problematic when the address of an object is to be retrieved rather than a function. However, usually one wants to extract functions anyway, so this is normally not a problem.
67:
or access those variables, and unload the library from memory. It is one of the three mechanisms by which a computer program can use some other software within the program; the others are
1324:
which disables the warning even if strict aliasing is in effect. This makes use of the fact that reading from a different union member than the one most recently written to (called "
1360:
and subsequent conversion. However, this approach requires maintaining separate pointers to all functions that are to be used externally, and the benefits are usually small.
1457:
Unix-like operating systems allow programmers to access the global symbol table, which includes both the main executable and subsequently loaded dynamic libraries.
1348:
For the subsequent version of the standard (issue 7, 2008), the problem has been discussed and the conclusion was that function pointers have to be convertible to
196:
where multiple different libraries may supply the requisite functionality and where the user has the option to select which library or libraries to provide.
2118:
Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg (2005). "Chapter 8.1.4 "Dynamic Loading" and Chapter 8.1.5 "Dynamic Linking and shared libraries"".
2150: 1923: 1148:
pointer. However, a function pointer is not required to even have the same size as a data object pointer, and therefore a valid conversion between type
2168: 1738:
Despite its promulgation in the 1980s through Unix and Windows, some systems still chose not to add—or even to remove—dynamic loading. For example,
1948: 2131: 2261: 1659:
The Reflection mechanism also provides a means to load a class if it isn't already loaded. It uses the classloader of the current class:
1887: 52: 2045: 1159:
convertible. The following code snippet demonstrates one workaround which allows to perform the conversion anyway on many systems:
79:
to start up in the absence of these libraries, to discover available libraries, and to potentially gain additional functionality.
169:
were added to Unix in the 1980s, but initially without the ability to let a program load additional libraries after startup.
1866: 1593: 1746:, by some of the same developers as Plan 9, also did not support dynamic linking, but plugin loading is available since 2021: 2256: 1791: 1767: 217: 1876: 1743: 1583: 152: 1927: 221: 1715:
details need to be observed to ensure the class is really unloaded. This makes unloading of classes tedious.
2100: 1985: 1750:(February 2017). The Go runtime and any library functions are statically linked into the compiled binary. 144: 63:) into memory, retrieve the addresses of functions and variables contained in the library, execute those 1776: 1739: 552: 2199: 1742:
and its successor 9front intentionally avoid dynamic linking, as they consider it to be "harmful". The
2189: 2234: 2194: 2059: 1811: 1368:
Loading a library causes memory to be allocated; the library must be deallocated in order to avoid a
38: 1836: 189: 178: 156: 56: 1990: 2163: 2003: 1846: 1841: 2219: 2214: 2123: 2239: 1352:
for POSIX compliance. This requires compiler makers to implement a working cast for this case.
192:
which are loaded at runtime with dynamic loading. Dynamic loading is also used in implementing
2127: 1460: 1451: 1385: 783: 371: 225: 193: 182: 130: 88: 2154: 1995: 1962: 1911: 1871: 1796: 1577: 1393: 1046: 795: 382: 292: 228: 166: 76: 64: 48: 1851: 1801: 114: 72: 60: 17: 2209: 2224: 1882: 1806: 1786: 118: 68: 2180:
Dynamic Library Programming Topics from Apple Developer Connection (targeted to macOS)
1045:
In Windows, the conversion is straightforward, since FARPROC is essentially already a
27:
Mechanism by which a computer program can load a library (or other binary) into memory
2250: 2075: 1826: 1377: 2007: 1976:
Ho, W. Wilson; Olsson, Ronald A. (1991). "An approach to genuine dynamic linking".
1831: 1325: 1963:"IBM CEMT NEWCOPY or PHASEIN request fails with NOT FOR HOLD PROG - United States" 1722:
Similarly, libraries implementing native methods are dynamically loaded using the
2159: 1761: 1369: 1037:
has to be converted to a pointer of the appropriate type before it can be used.
254: 232: 31: 133:) to the subsystems fixed all programs at once, without the need to relink them 1861: 1856: 1821: 1757: 1587: 1373: 103: 92: 2025: 1447: 896:// Alternatively, NSClassFromString() can be used to obtain a class by name. 379: 205: 1999: 1454:
allow programmers to extract symbols from the currently executing process.
1216:
warning: dereferencing type-punned pointer will break strict-aliasing rules
1152:
and a pointer to a function may not be easy to implement on all platforms.
1781: 778:
Extracting the contents of a dynamically loaded library is achieved with
2173: 1380:
which contains the library. Unloading the library is accomplished with
75:. Unlike static linking and dynamic linking, dynamic loading allows a 1816: 96: 37:"Dynamically loaded library" redirects here. Not to be confused with 1949:"Using the CICS-supplied procedures to install application programs" 1747: 213: 209: 107: 791: 472: 249: 160: 148: 122: 111: 1467:
Unix-like operating systems (Solaris, Linux, *BSD, macOS, etc.)
1400:
Unix-like operating systems (Solaris, Linux, *BSD, macOS, etc.)
1155:
On most systems in use today, function and object pointers are
802:
Unix-like operating systems (Solaris, Linux, *BSD, macOS, etc.)
151:(1970s onwards) uses dynamic loading extensively both for its 140: 100: 389:
Most Unix-like operating systems (Solaris, Linux, *BSD, etc.)
136:
Libraries could be protected from unauthorized modification
117:, and continues to be used in IBM's operating systems for 1214:
The above snippet will give a warning on some compilers:
631:
Or if the framework or bundle contains Objective-C code:
1372:. Additionally, failure to unload a library can prevent 879:
On macOS, when using Objective-C bundles, one can also:
177:
Dynamic loading is most frequently used in implementing
1332:
Solving the function pointer problem on POSIX systems
1340:
Because of this problem, the POSIX documentation on
1140:
According to the POSIX specification, the result of
578:"/Library/Frameworks/SDL.framework/SDL" 87:Dynamic loading was a common technique for IBM's 2022:"Apache 1.3 Dynamic Shared Object (DSO) Support" 1912:Autoconf, Automake, and Libtool: Dynamic Loading 678:// Use the classes and functions in the bundle. 2055: 2053: 1016:// cast initializer to its proper type and use 871:// cast initializer to its proper type and use 2046:GCC 4.3.2 Optimize Options: -fstrict-aliasing 765:// use the result in a call to GetProcAddress 8: 1907: 1905: 1446:The implementations of dynamic loading on 1989: 362:Loading the library is accomplished with 204:Not all systems support dynamic loading. 188:"dynamic shared object" plugin files are 242: 1901: 2176:(complete but concise working example) 1025:Converting a library function pointer 231:provides dynamic loading through the 7: 1590:can be dynamically loaded using the 623:// use the result in a call to dlsym 543:// use the result in a call to dlsym 458:// use the result in a call to dlsym 2160:Dynamic Shared Object (DSO) Support 1888:Terminate-and-stay-resident program 25: 1978:Software: Practice and Experience 1734:Platforms without dynamic loading 220:provide dynamic loading with the 1760: 2174:Dynamic Library Loading Example 2169:C++ Dynamic Linking By Example 1924:"Linux4U: ELF Dynamic Loading" 1: 1867:Relocation (computer science) 2262:Operating system technology 1792:Dynamic binding (computing) 1768:Computer programming portal 774:Extracting library contents 2278: 1575: 270:#include <windows.h> 208:operating systems such as 47:is a mechanism by which a 39:dynamically linked library 36: 29: 18:Dynamically loaded library 2120:Operating System Concepts 1877:Resident System Extension 1584:Java programming language 1218:. Another workaround is: 1661: 1600: 1509: 1470: 1424: 1403: 1220: 1161: 1082: 1051: 953: 881: 805: 702: 633: 557: 498:"libSDL.dylib" 477: 392: 291:, etc. depending on the 265:#include <dlfcn.h> 30:Not to be confused with 2060:POSIX documentation on 1744:Go programming language 276:Definitions for header 250:Standard POSIX/Unix API 2000:10.1002/spe.4380210404 1450:operating systems and 1301:sdl_init_function_type 1253:sdl_init_function_type 1235:sdl_init_function_type 1200:sdl_init_function_type 1188:sdl_init_function_type 1176:sdl_init_function_type 1121:sdl_init_function_type 1109:sdl_init_function_type 1097:sdl_init_function_type 341:Unloading the library 261:Header file inclusion 222:C programming language 145:transaction processing 1777:Compile and go system 1740:Plan 9 from Bell Labs 1598:object. For example: 1576:Further information: 1364:Unloading the library 413:"libSDL.so" 255:Microsoft Windows API 1812:Dynamic-link library 1728:System.unloadLibrary 1726:method. There is no 1618:getSystemClassLoader 977:"SDL_Init" 832:"SDL_Init" 326:Extracting contents 306:Loading the library 2206:C/C++ Windows API: 2124:J. Wiley & Sons 1837:Library (computing) 1004:// report error ... 859:// report error ... 753:// report error ... 726:"SDL.dll" 611:// report error ... 531:// report error ... 446:// report error ... 385:. Examples follow: 358:Loading the library 183:Apache Web Server's 181:. For example, the 157:application program 99:, particularly for 2257:Computer libraries 1847:Loader (computing) 1842:Linker (computing) 1724:System.loadLibrary 1563:this_process_again 1536:this_process_again 1376:operations on the 929:// Use the object. 224:"dl" library. The 2225:Delay-Loaded DLLs 2133:978-0-471-69466-3 2076:"Dynamic Linking" 2065:(issues 6 and 7). 1542:GetModuleHandleEx 1394:operating systems 796:operating systems 383:operating systems 355: 354: 194:computer programs 115:runtime libraries 89:operating systems 16:(Redirected from 2269: 2186:C/C++ Unix API: 2137: 2105: 2104: 2097: 2091: 2090: 2088: 2087: 2072: 2066: 2063: 2057: 2048: 2043: 2037: 2036: 2034: 2033: 2024:. Archived from 2018: 2012: 2011: 1993: 1973: 1967: 1966: 1959: 1953: 1952: 1945: 1939: 1938: 1936: 1935: 1926:. Archived from 1920: 1914: 1909: 1872:Relocation table 1797:Dynamic dispatch 1770: 1765: 1764: 1729: 1725: 1710: 1707: 1704: 1701: 1698: 1695: 1692: 1689: 1686: 1683: 1680: 1677: 1674: 1671: 1668: 1665: 1655: 1652: 1649: 1646: 1643: 1640: 1637: 1634: 1631: 1628: 1625: 1622: 1619: 1616: 1613: 1610: 1607: 1604: 1596: 1578:Java Classloader 1567: 1564: 1561: 1558: 1555: 1552: 1549: 1546: 1543: 1540: 1537: 1534: 1531: 1528: 1525: 1522: 1519: 1516: 1513: 1501: 1498: 1495: 1492: 1489: 1486: 1483: 1480: 1477: 1474: 1437: 1434: 1431: 1428: 1416: 1413: 1410: 1407: 1391: 1383: 1359: 1351: 1343: 1320: 1317: 1314: 1311: 1308: 1305: 1302: 1299: 1296: 1293: 1290: 1287: 1284: 1281: 1278: 1275: 1272: 1269: 1266: 1263: 1260: 1257: 1254: 1251: 1248: 1245: 1242: 1239: 1236: 1233: 1230: 1227: 1224: 1217: 1210: 1207: 1204: 1201: 1198: 1195: 1192: 1189: 1186: 1183: 1180: 1177: 1174: 1171: 1168: 1165: 1151: 1147: 1143: 1131: 1128: 1125: 1122: 1119: 1116: 1113: 1110: 1107: 1104: 1101: 1098: 1095: 1092: 1089: 1086: 1076: 1073: 1070: 1067: 1064: 1061: 1058: 1055: 1047:function pointer 1036: 1035:GetProcAddress() 1032: 1020: 1017: 1014: 1011: 1008: 1005: 1002: 999: 996: 993: 990: 987: 984: 981: 978: 975: 972: 969: 966: 963: 960: 957: 945: 942: 941:// Report error. 939: 936: 933: 930: 927: 924: 921: 918: 915: 912: 909: 906: 903: 900: 897: 894: 891: 888: 885: 875: 872: 869: 866: 863: 860: 857: 854: 851: 848: 845: 842: 839: 836: 833: 830: 827: 824: 821: 818: 815: 812: 809: 789: 781: 769: 766: 763: 760: 757: 754: 751: 748: 745: 742: 739: 736: 733: 730: 727: 724: 721: 718: 715: 712: 709: 706: 694: 691: 690:// Handle error. 688: 685: 682: 679: 676: 673: 670: 667: 664: 661: 658: 655: 652: 649: 646: 643: 640: 637: 627: 624: 621: 618: 615: 612: 609: 606: 603: 600: 597: 594: 591: 588: 585: 582: 579: 576: 573: 570: 567: 564: 561: 547: 544: 541: 538: 535: 532: 529: 526: 523: 520: 517: 514: 511: 508: 505: 502: 499: 496: 493: 490: 487: 484: 481: 462: 459: 456: 453: 450: 447: 444: 441: 438: 435: 432: 429: 426: 423: 420: 417: 414: 411: 408: 405: 402: 399: 396: 377: 369: 365: 351: 346: 336: 331: 320: 316: 311: 301: 290: 286: 281: 271: 266: 243: 229:operating system 187: 179:software plugins 167:Shared libraries 77:computer program 49:computer program 21: 2277: 2276: 2272: 2271: 2270: 2268: 2267: 2266: 2247: 2246: 2151:Dynamic Loading 2144: 2134: 2117: 2114: 2112:Further reading 2109: 2108: 2099: 2098: 2094: 2085: 2083: 2074: 2073: 2069: 2061: 2058: 2051: 2044: 2040: 2031: 2029: 2020: 2019: 2015: 1975: 1974: 1970: 1961: 1960: 1956: 1947: 1946: 1942: 1933: 1931: 1922: 1921: 1917: 1910: 1903: 1898: 1893: 1852:Name decoration 1802:Dynamic library 1766: 1759: 1756: 1736: 1727: 1723: 1712: 1711: 1708: 1705: 1702: 1699: 1696: 1693: 1690: 1687: 1684: 1681: 1678: 1675: 1672: 1669: 1666: 1663: 1657: 1656: 1653: 1650: 1647: 1644: 1641: 1638: 1635: 1632: 1629: 1626: 1623: 1620: 1617: 1614: 1611: 1608: 1605: 1602: 1592: 1580: 1574: 1569: 1568: 1565: 1562: 1559: 1556: 1553: 1550: 1547: 1544: 1541: 1538: 1535: 1532: 1529: 1526: 1523: 1521:GetModuleHandle 1520: 1517: 1514: 1511: 1508: 1503: 1502: 1499: 1496: 1493: 1490: 1487: 1484: 1481: 1478: 1475: 1472: 1469: 1444: 1442:Special library 1439: 1438: 1435: 1432: 1429: 1426: 1423: 1418: 1417: 1414: 1411: 1408: 1405: 1402: 1389: 1381: 1366: 1357: 1349: 1341: 1334: 1322: 1321: 1318: 1315: 1312: 1309: 1306: 1303: 1300: 1297: 1294: 1291: 1288: 1285: 1282: 1279: 1276: 1273: 1270: 1267: 1264: 1261: 1258: 1255: 1252: 1249: 1246: 1243: 1240: 1237: 1234: 1231: 1228: 1225: 1222: 1215: 1212: 1211: 1208: 1205: 1202: 1199: 1196: 1193: 1190: 1187: 1184: 1181: 1178: 1175: 1172: 1169: 1166: 1163: 1149: 1145: 1141: 1138: 1133: 1132: 1129: 1126: 1123: 1120: 1117: 1114: 1111: 1108: 1105: 1102: 1099: 1096: 1093: 1090: 1087: 1084: 1078: 1077: 1074: 1071: 1068: 1065: 1062: 1059: 1056: 1053: 1043: 1034: 1030: 1027: 1022: 1021: 1018: 1015: 1012: 1009: 1006: 1003: 1000: 997: 994: 991: 988: 985: 982: 979: 976: 973: 970: 967: 964: 961: 958: 955: 952: 947: 946: 943: 940: 937: 934: 931: 928: 925: 922: 919: 916: 913: 910: 907: 904: 901: 898: 895: 892: 889: 886: 883: 877: 876: 873: 870: 867: 864: 861: 858: 855: 852: 849: 846: 843: 840: 837: 834: 831: 828: 825: 822: 819: 816: 813: 810: 807: 804: 787: 779: 776: 771: 770: 767: 764: 761: 758: 755: 752: 749: 746: 743: 740: 737: 734: 731: 728: 725: 722: 719: 716: 713: 710: 707: 704: 701: 696: 695: 692: 689: 686: 683: 680: 677: 674: 671: 668: 665: 662: 659: 656: 653: 650: 647: 644: 641: 638: 635: 629: 628: 625: 622: 619: 616: 613: 610: 607: 604: 601: 598: 595: 592: 589: 586: 583: 580: 577: 574: 571: 568: 565: 562: 559: 553:macOS Framework 549: 548: 545: 542: 539: 536: 533: 530: 527: 524: 521: 518: 515: 512: 509: 506: 503: 500: 497: 494: 491: 488: 485: 482: 479: 469: 464: 463: 460: 457: 454: 451: 448: 445: 442: 439: 436: 433: 430: 427: 424: 421: 418: 415: 412: 409: 406: 403: 400: 397: 394: 391: 375: 367: 363: 360: 349: 344: 334: 329: 321: 318: 317: 314: 309: 299: 288: 284: 279: 269: 264: 241: 202: 185: 175: 155:and for normal 85: 73:dynamic linking 45:Dynamic loading 42: 35: 28: 23: 22: 15: 12: 11: 5: 2275: 2273: 2265: 2264: 2259: 2249: 2248: 2245: 2244: 2243: 2242: 2237: 2229: 2228: 2227: 2222: 2217: 2215:GetProcAddress 2212: 2204: 2203: 2202: 2197: 2192: 2184: 2183: 2182: 2177: 2171: 2166: 2157: 2147:General Links 2143: 2142:External links 2140: 2139: 2138: 2132: 2113: 2110: 2107: 2106: 2092: 2067: 2049: 2038: 2013: 1984:(4): 375–390. 1968: 1954: 1940: 1915: 1900: 1899: 1897: 1894: 1892: 1891: 1885: 1883:Static library 1880: 1874: 1869: 1864: 1859: 1854: 1849: 1844: 1839: 1834: 1829: 1824: 1819: 1814: 1809: 1807:Dynamic linker 1804: 1799: 1794: 1789: 1787:Direct binding 1784: 1779: 1773: 1772: 1771: 1755: 1752: 1735: 1732: 1662: 1601: 1573: 1570: 1510: 1507: 1504: 1471: 1468: 1465: 1443: 1440: 1425: 1422: 1419: 1404: 1401: 1398: 1365: 1362: 1333: 1330: 1221: 1162: 1137: 1134: 1083: 1052: 1042: 1039: 1029:The result of 1026: 1023: 965:GetProcAddress 954: 951: 948: 882: 806: 803: 800: 780:GetProcAddress 775: 772: 703: 700: 697: 634: 558: 478: 468: 465: 393: 390: 387: 359: 356: 353: 352: 347: 342: 338: 337: 335:GetProcAddress 332: 327: 323: 322: 312: 307: 303: 302: 297: 277: 273: 272: 267: 262: 258: 257: 252: 247: 240: 237: 201: 198: 174: 171: 138: 137: 134: 119:z/Architecture 84: 81: 69:static linking 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 2274: 2263: 2260: 2258: 2255: 2254: 2252: 2241: 2238: 2236: 2233: 2232: 2230: 2226: 2223: 2221: 2218: 2216: 2213: 2211: 2208: 2207: 2205: 2201: 2198: 2196: 2193: 2191: 2188: 2187: 2185: 2181: 2178: 2175: 2172: 2170: 2167: 2165: 2161: 2158: 2156: 2152: 2149: 2148: 2146: 2145: 2141: 2135: 2129: 2125: 2121: 2116: 2115: 2111: 2102: 2096: 2093: 2081: 2077: 2071: 2068: 2064: 2056: 2054: 2050: 2047: 2042: 2039: 2028:on 2011-04-22 2027: 2023: 2017: 2014: 2009: 2005: 2001: 1997: 1992: 1991:10.1.1.37.933 1987: 1983: 1979: 1972: 1969: 1965:. 2013-03-15. 1964: 1958: 1955: 1950: 1944: 1941: 1930:on 2011-03-11 1929: 1925: 1919: 1916: 1913: 1908: 1906: 1902: 1895: 1889: 1886: 1884: 1881: 1878: 1875: 1873: 1870: 1868: 1865: 1863: 1860: 1858: 1855: 1853: 1850: 1848: 1845: 1843: 1840: 1838: 1835: 1833: 1830: 1828: 1827:gold (linker) 1825: 1823: 1820: 1818: 1815: 1813: 1810: 1808: 1805: 1803: 1800: 1798: 1795: 1793: 1790: 1788: 1785: 1783: 1780: 1778: 1775: 1774: 1769: 1763: 1758: 1753: 1751: 1749: 1745: 1741: 1733: 1731: 1720: 1716: 1660: 1599: 1597: 1595: 1589: 1585: 1579: 1571: 1505: 1466: 1464: 1462: 1458: 1455: 1453: 1449: 1441: 1420: 1399: 1397: 1395: 1392:on Unix-like 1387: 1379: 1375: 1371: 1363: 1361: 1353: 1346: 1338: 1331: 1329: 1327: 1219: 1160: 1158: 1153: 1135: 1081: 1050: 1048: 1040: 1038: 1024: 949: 880: 801: 799: 797: 793: 785: 773: 698: 632: 556: 554: 476: 474: 466: 388: 386: 384: 381: 373: 368:LoadLibraryEx 357: 348: 343: 340: 339: 333: 328: 325: 324: 319:LoadLibraryEx 313: 308: 305: 304: 298: 296: 294: 278: 275: 274: 268: 263: 260: 259: 256: 253: 251: 248: 245: 244: 238: 236: 234: 230: 227: 223: 219: 215: 211: 207: 199: 197: 195: 191: 184: 180: 172: 170: 168: 164: 162: 158: 154: 150: 146: 143:'s strategic 142: 135: 132: 128: 127: 126: 124: 120: 116: 113: 109: 105: 102: 98: 94: 90: 82: 80: 78: 74: 70: 66: 62: 58: 54: 50: 46: 40: 33: 19: 2119: 2095: 2084:. Retrieved 2079: 2070: 2041: 2030:. Retrieved 2026:the original 2016: 1981: 1977: 1971: 1957: 1943: 1932:. Retrieved 1928:the original 1918: 1832:Lazy loading 1737: 1721: 1717: 1713: 1658: 1591: 1581: 1515:this_process 1479:this_process 1459: 1456: 1445: 1367: 1354: 1347: 1339: 1335: 1326:type punning 1323: 1213: 1156: 1154: 1139: 1136:Unix (POSIX) 1079: 1044: 1028: 878: 777: 630: 550: 470: 361: 300:kernel32.dll 282: 203: 176: 165: 139: 86: 44: 43: 32:dynamic load 2235:ClassLoader 2220:FreeLibrary 2210:LoadLibrary 1706:newInstance 1651:newInstance 1612:ClassLoader 1594:ClassLoader 1433:sdl_library 1427:FreeLibrary 1412:sdl_library 1382:FreeLibrary 1370:memory leak 1295:initializer 1206:initializer 1127:initializer 989:initializer 971:sdl_library 959:initializer 844:initializer 826:sdl_library 814:initializer 738:sdl_library 714:LoadLibrary 708:sdl_library 596:sdl_library 566:sdl_library 516:sdl_library 486:sdl_library 431:sdl_library 401:sdl_library 364:LoadLibrary 350:FreeLibrary 315:LoadLibrary 289:libdl.dylib 233:Windows API 104:subroutines 2251:Categories 2231:Java API: 2086:2014-12-22 2032:2007-12-31 1934:2007-12-31 1896:References 1862:Prelinking 1857:Prebinding 1822:GNU linker 1374:filesystem 121:, such as 106:, and for 93:System/360 59:(or other 2080:cat-v.org 1986:CiteSeerX 1624:loadClass 1448:Unix-like 1388:and with 1304:init_func 1191:init_func 1112:init_func 905:rootClass 887:rootClass 786:and with 584:RTLD_LAZY 504:RTLD_LAZY 475:library: 419:RTLD_LAZY 380:Unix-like 374:and with 206:Unix-like 190:libraries 65:functions 55:, load a 2101:"Go FAQ" 2082:. 9front 2062:dlopen() 1782:DLL Hell 1754:See also 1730:method. 1157:de facto 636:NSBundle 285:libdl.so 200:In C/C++ 147:system, 95:such as 53:run time 51:can, at 2200:dlclose 2155:Linux4U 2008:9422227 1679:forName 1588:classes 1582:In the 1572:In Java 1533:HMODULE 1512:HMODULE 1506:Windows 1461:Windows 1452:Windows 1421:Windows 1406:dlclose 1390:dlclose 1386:Windows 1358:dlsym() 1342:dlsym() 1223:typedef 1164:typedef 1142:dlsym() 1085:typedef 1066:FARPROC 1057:INT_PTR 1054:typedef 1041:Windows 1031:dlsym() 956:FARPROC 950:Windows 784:Windows 705:HMODULE 699:Windows 651:NSError 372:Windows 345:dlclose 239:Summary 226:Windows 218:Solaris 131:patches 129:Fixes ( 83:History 57:library 2190:dlopen 2164:Apache 2130:  2006:  1988:  1817:FlexOS 1748:Go 1.8 1691:Object 1636:Object 1485:dlopen 917:object 794:-like 642:bundle 572:dlopen 492:dlopen 407:dlopen 376:dlopen 310:dlopen 216:, and 153:kernel 97:OS/360 61:binary 2240:Class 2195:dlsym 2004:S2CID 1890:(TSR) 1879:(RSX) 1673:Class 1664:Class 1603:Class 1560:& 1350:void* 1310:alias 1283:alias 1277:alias 1247:union 1150:void* 1144:is a 884:Class 820:dlsym 788:dlsym 551:As a 471:As a 467:macOS 330:dlsym 246:Name 214:Linux 210:macOS 186:*.dso 108:COBOL 2128:ISBN 1700:type 1685:name 1667:type 1645:type 1630:name 1606:type 1527:NULL 1491:NULL 1473:void 1378:file 1316:func 1262:void 1256:func 1241:void 1226:void 1182:void 1167:void 1146:void 1103:void 1088:void 1072:void 1010:else 995:NULL 935:else 923:init 865:else 850:NULL 808:void 792:Unix 759:else 744:NULL 720:TEXT 684:else 617:else 602:NULL 560:void 537:else 522:NULL 480:void 473:Unix 452:else 437:NULL 395:void 173:Uses 161:24/7 149:CICS 123:z/OS 112:PL/I 110:and 91:for 71:and 2162:by 2153:on 1996:doi 1709:(); 1694:obj 1654:(); 1639:obj 1621:(). 1384:on 1289:obj 1268:obj 1033:or 790:on 782:on 729:)); 663:nil 657:err 378:on 370:on 366:or 163:). 141:IBM 101:I/O 2253:: 2126:. 2122:. 2078:. 2052:^ 2002:. 1994:. 1982:21 1980:. 1904:^ 1688:); 1633:); 1586:, 1566:); 1530:); 1500:); 1436:); 1415:); 1244:); 1238:)( 1185:); 1179:)( 1106:); 1100:)( 1075:); 1069:)( 1049:: 992:== 983:if 980:); 926:]; 914:id 899:if 847:== 838:if 835:); 798:. 741:== 732:if 672:() 669:if 599:== 590:if 587:); 555:: 519:== 510:if 507:); 434:== 425:if 422:); 295:) 293:OS 287:, 280:dl 235:. 212:, 2136:. 2103:. 2089:. 2035:. 2010:. 1998:: 1951:. 1937:. 1703:. 1697:= 1682:( 1676:. 1670:= 1648:. 1642:= 1627:( 1615:. 1609:= 1557:, 1554:0 1551:, 1548:0 1545:( 1539:; 1524:( 1518:= 1497:0 1494:, 1488:( 1482:= 1476:* 1430:( 1409:( 1319:; 1313:. 1307:= 1298:; 1292:= 1286:. 1280:; 1274:} 1271:; 1265:* 1259:; 1250:{ 1232:* 1229:( 1209:; 1203:) 1197:( 1194:= 1173:* 1170:( 1130:; 1124:) 1118:( 1115:= 1094:* 1091:( 1063:* 1060:( 1019:} 1013:{ 1007:} 1001:{ 998:) 986:( 974:, 968:( 962:= 944:} 938:{ 932:} 920:= 911:{ 908:) 902:( 893:; 890:= 874:} 868:{ 862:} 856:{ 853:) 841:( 829:, 823:( 817:= 811:* 768:} 762:{ 756:} 750:{ 747:) 735:( 723:( 717:( 711:= 693:} 687:{ 681:} 675:{ 666:; 660:= 654:* 648:; 645:= 639:* 626:} 620:{ 614:} 608:{ 605:) 593:( 581:, 575:( 569:= 563:* 546:} 540:{ 534:} 528:{ 525:) 513:( 501:, 495:( 489:= 483:* 461:} 455:{ 449:} 443:{ 440:) 428:( 416:, 410:( 404:= 398:* 283:( 41:. 34:. 20:)

Index

Dynamically loaded library
dynamic load
dynamically linked library
computer program
run time
library
binary
functions
static linking
dynamic linking
computer program
operating systems
System/360
OS/360
I/O
subroutines
COBOL
PL/I
runtime libraries
z/Architecture
z/OS
patches
IBM
transaction processing
CICS
kernel
application program
24/7
Shared libraries
software plugins

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.