He estado buscando este término "exportando un símbolo". ¿Qué significa exportar un símbolo en C/C++ o con respecto a las bibliotecas (compartido/estático)? ¿De dónde exportamos los símbolos y por qué? ¿Cuál es la relación de exportar un símbolo con el nombre que se fragmenta por el compilador?¿Qué significa exportar un símbolo?
Respuesta
Exportar un símbolo significa "publicitar" su existencia en su archivo de objeto/biblioteca y dónde está, de modo que pueda ser importado (= vinculado a) por otros módulos.
El enlace puede hacerse estática o dinámicamente, pero de cualquier forma el enlazador debe saber qué es el símbolo y dónde está, y el símbolo exportado y el símbolo importado deben coincidir para que ocurra. El mapeo de nombres está relacionado con eso (el mapeo de nombres de C++ incluye la definición de tipo de símbolo en el nombre del símbolo, y el reordenamiento del símbolo exportado e importado debe coincidir para que el enlazador vincule correctamente la importación-exportación).
Ejemplo:
Suponga que tiene una biblioteca "STANDARDC" (nombre aleatorio) y su SOMEPROG programa. El programa SOMEPROG necesita imprimir en la consola, por lo que llamará al printf
. Pero en realidad no implementa printf
en su programa SOMEPROG, simplemente lo usa (= lo importa), mientras que la implementación está en otra parte.
La biblioteca STANDARDC tiene una lista de símbolos que exporta, que incluye todas las funciones que se implementan en esa biblioteca y se pueden llamar desde el exterior (= funciones exportadas). printf
es una de esas funciones, por lo que aparecerá en la lista exportada.
El compilador pasa por su SOMEPROG.C y ve que hace referencia a printf
, pero no hay implementación para él. El compilador agrega el printf
a la lista de símbolos importados para el SOMEPROG.obj resultante, para que el enlazador vincule la implementación real en.
El vinculador toma su archivo SOMEPROG.obj y el archivo .lib STANDARDC y ve qué funciones se usan en el SOMEPROG.obj. El vinculador encuentra que printf
no está implementado, se importa, por lo que el vinculador examina todos los archivos .lib que tiene y encuentra el printf
correspondiente en la lista exportada de STANDARDC. Se necesita la implementación de printf
de STANDARDC y la vincula a su programa donde quiera que haga referencia al símbolo importado printf
.
- 1. ¿Qué significa un símbolo $ en un JSP
- 2. ¿Qué significa un "?" significa símbolo (signo de interrogación) en Scala?
- 3. ¿Qué significa "exportar claves privadas" (Makecert -pe)?
- 4. Símbolo desconocido en el algoritmo: ¿qué significa ∀?
- 5. ¿Qué significa este símbolo de eclipse?
- 6. ¿Qué significa el símbolo @ para Objective-C?
- 7. ¿Qué significa el símbolo => en Haskell?
- 8. ¿Qué significa el símbolo "#" en TSQL?
- 9. ¿Qué significa el símbolo '>' en css?
- 10. ¿Qué significa el símbolo '/' en el CSS
- 11. ¿Qué significa el símbolo ::: media en I
- 12. ¿Qué significa este símbolo en PHP <? =
- 13. ¿Qué significa este símbolo en Mercurial?
- 14. ¿Qué significa el símbolo @ en R?
- 15. ¿Qué significa @: (en el símbolo dos puntos) en un Makefile?
- 16. ¿Qué significa una variable con un símbolo @ en Ant build.xml?
- 17. ¿Qué significa el símbolo @ en un Procedimiento en MySQL?
- 18. ¿Qué significa exportar una aplicación de Android exactamente?
- 19. Exportar un símbolo global desde una DLL de Delphi
- 20. ¿Qué significa el símbolo SQL # y cómo se usa?
- 21. ¿Qué significa "valor del símbolo" del comando nm?
- 22. ¿Qué significa el símbolo <??> en C# .NET?
- 23. ¿Qué significa el símbolo de intercalación ('^') en C++/CLI?
- 24. ¿Qué significa el símbolo >> en Haskell
- 25. ¿Qué significa $$ @ y el símbolo de tubería en Makefile?
- 26. Ruby on Rails: ¿qué significa el símbolo "igual" como parámetro?
- 27. ¿Qué significa &: en rubí, es un bloque mezclado con un símbolo?
- 28. ¿Qué significa @! significa en un De declaración
- 29. ¿Qué significa "# $" en bash?
- 30. ¿Qué significa el símbolo @ antes de un nombre de variable en C#?
busque _declspec (dllimport/export), estoy seguro de que puede encontrar grandes explicaciones. –
Además, la pregunta no fue downvoted porque era un duplicado, pero probablemente porque SO lo sugirió de los duplicados e ignoró las sugerencias. –
¿Por qué es offtopic? – littleadv