Recientemente me encontré con una DLL instalada en mi sistema que Dependancy Walker (y cada otra utilidad que probé) dice que tiene cero exportaciones por nombre u ordinal, sin embargo, el archivo es de aproximadamente 4mb de tamaño. Pensé que el único propósito de una DLL era exportar funciones para su uso por otro código, entonces, ¿cuál sería el propósito de una DLL sin exportaciones visibles?¿Cómo puede una DLL tener cero exportaciones?
Respuesta
Una forma de pensar en una DLL es como contenedor de funciones. Exportar una función desde una DLL hace que esas funciones sean visibles para las personas que llaman fuera de la DLL. Si bien la exportación de funciones desde un DLL es quizás la forma más común de proporcionar acceso a ellos, muchas plataformas ofrecen otras formas de acceder a funciones que no se han exportado, como la reflexión en .NET Framework y Java, y (creo) LoadLibtary/GetProcAddress en Win32
razones para hacer esto son variadas, a menudo es porque es beneficioso para el desarrollador que tienen funciones en una biblioteca, pero indeseable para esas funciones a ser llamadas desde aplicaciones externas
sólo de recursos DLL, tal vez? Esos se utilizan con bastante frecuencia para fines de localización, por ejemplo.
EDITAR: también es posible tener una DLL con código que hace algo en DllMain() para hacer de alguna manera que su funcionalidad esté disponible. La DLL puede registrarse con algún despachador global, por ejemplo, o crear objetos kernel con nombre ...
- 1. ¿Cómo tener cero negativo siempre formateado como cero positivo en una cadena de python?
- 2. ¿Puede una DLL llamar a una DLL .NET?
- 3. ¿Cómo puede una instrucción tener both = y ==?
- 4. Exportaciones de módulo clase Nodes.js
- 5. ¿Puede una matriz variante tener 0 elementos?
- 6. ¿Puede GVIM tener una imagen de fondo?
- 7. Wordpress: ¿Puede una página tener dos padres?
- 8. ¿Puede una URL tener un asterisco?
- 9. Error en Visual Studio mientras se depura el "parámetro 'basepath' no puede tener longitud cero"
- 10. Dinámicamente P/Invocando una DLL
- 11. ¿Cómo puede una consulta SQL tener dos cláusulas?
- 12. ¿Cómo puede una vista personalizada tener acceso a su actividad?
- 13. JPA ManyToMany, ¿cómo puede JoinTable tener una propiedad?
- 14. Comprensión de las exportaciones en NodeJS
- 15. ¿Puede una interfaz Objective c tener más de una implementación?
- 16. ¿Cómo puedo extender las exportaciones automáticas de pragma de Moose?
- 17. ¿Cómo tener una combinación de teclas principal que puede tener valores nulos?
- 18. Exportación de objetos con el objeto Exportaciones
- 19. ¿Qué debería tener en cuenta al construir una solución OLAP desde cero?
- 20. ¿Puede un elemento tener una identificación y una clase?
- 21. ¿Puede una vista principal tener más de una colección?
- 22. ¿Cómo se puede probar Get-ChildItem sin resultados (cero archivos)?
- 23. Java Enums puede tener comportamiento?
- 24. En C++ puede tener un puntero a una función, ¿También puede tener un puntero a una clase?
- 25. Clave externa que también puede ser cero
- 26. PHP, ¿Cómo atrapar una división por cero?
- 27. .NET - ¿Cómo depurar una DLL?
- 28. ¿Puede NuGet distribuir un dll COM?
- 29. ¿Puede tener demasiados procedimientos almacenados?
- 30. Cómo crear una clase desde dll (constructor en dll)? (С ++)
Oh, eso tiene sentido. Nunca me di cuenta (o incluso pensé) que podría haber formas de usar una DLL que no sea a través de la tabla de exportación si la escribió. –