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:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.