Cómo crear y llamar DLL usando C#
1. Escrito al frente El lenguaje C# es un lenguaje de programación simple pero potente que se utiliza para escribir aplicaciones empresariales. El lenguaje C# evolucionó a partir de los lenguajes C y C y utiliza muchas características de C en términos de declaraciones, expresiones y operadores. El lenguaje C# ha experimentado mejoras e innovaciones considerables en áreas como seguridad de tipos, control de versiones, eventos y recolección de basura. El lenguaje C# proporciona acceso a estilos de API comunes, como .NET Framework, COM, automatización, API de estilo C, etc. ¿Qué es una biblioteca de enlaces dinámicos? Las tres letras DLL deben resultarle familiares. Es la abreviatura de Biblioteca de vínculos dinámicos (DLL) es un archivo ejecutable como biblioteca de funciones compartidas. Los enlaces dinámicos proporcionan una forma para que un proceso llame a funciones que no forman parte de su código ejecutable. El código ejecutable de una función se encuentra en una DLL que contiene una o más funciones que han sido compiladas, vinculadas y almacenadas por separado del proceso que las utiliza. Las DLL también ayudan a compartir datos y recursos. Varias aplicaciones pueden acceder simultáneamente al contenido de una única copia de una DLL en la memoria. Como la mayoría de los programadores, debes haber utilizado archivos DLL con frecuencia. ¿Alguna vez has sentido que te trae buenos errores en programación y codificación? Hoy quiero discutir un tema contigo: cómo crear y llamar a DLL (biblioteca de enlaces dinámicos) en C#. De hecho, en un sentido amplio, DLL lo permite. Me permite organizar y escribir nuestras aplicaciones de manera más flexible. Como diseñador de software, puedo lograr un alto efecto de reutilización de código basado en ello. Permítanme presentarles cómo crear y llamar a DLL en C#. 2. Preparación Necesitamos dar una breve introducción a lo que vamos a hacer a continuación. En este artículo usaremos el lenguaje C# para crear una biblioteca de enlaces dinámicos llamada MyDLL.DLL. En este archivo de biblioteca de enlaces dinámicos proporcionaremos dos. La función es intercambiar los valores de dos parámetros y la otra función es encontrar el máximo común divisor de dos parámetros. Luego cree una aplicación para usar esta DLL. Ejecute y genere los resultados. 3. Crear DLL Creemos los siguientes tres archivos de código C#: 1. MySwap.csusing System; espacio de nombres MyMethods { public class SwapClass { public static bool Swap(ref long i, ref long j) { i = i j = i-j; i = i-j; devuelve verdadero; } }} 2. MyMaxCD.csusing System; espacio de nombres MyMethods{ clase pública MaxCDClass { public static long MaxCD(long i, long j) { long a, b, temp; a = i; b = j; } else { b = i; a = j } temp = a b; }} Cabe señalar que cuando creamos estos dos archivos, podemos usar Visual Studio.NET u otros editores de texto, incluso el Bloc de notas. Aunque estos dos archivos no están en el mismo archivo, pertenecen al mismo espacio de nombres, lo que nos facilitará utilizar estos dos métodos en el futuro. Por supuesto, también pueden pertenecer a diferentes espacios de nombres, lo cual está completamente bien, pero solo necesitamos hacer referencia a dos espacios de nombres diferentes cuando los aplicamos, por lo que el autor recomienda que sea mejor escribirlos en un espacio de nombres.
La siguiente tarea es convertir estos dos archivos cs en los archivos DLL que necesitamos. El método es el siguiente: En un sistema operativo con Microsoft.NET Framework instalado, podemos encontrar el directorio Microsoft.NET en el directorio donde se encuentra Windows. Se proporciona un compilador de C# en este directorio Ejecute CSC.EXE: csc /target: biblioteca /out: MyDLL.DLL MySwap.cs Una vez completado MyMaxCD.cs, puede encontrar el archivo MyDLL.DLL que acabamos de generar en este directorio /. La opción del compilador target:library le indica al compilador que genere archivos DLL en lugar de archivos EXE. La opción del compilador /out seguida del nombre del archivo especifica el nombre del archivo DLL. Si /out no va seguido de un nombre de archivo, el compilador utiliza el primer archivo (MySwap.cs) como nombre de archivo DLL. El archivo generado es el archivo MySwap.DLL 4. Usando DLL, simplemente escribimos un pequeño programa para probar si los dos métodos que acabamos de escribir son correctos. Sígueme: MyClient.csusing System; Haga referencia al espacio de nombres que acaba de definir si escribimos los dos archivos ahora en dos espacios de nombres diferentes class MyClient { public static void Main(string[] args) { if (args.Length!= 2) { Console.WriteLine( "Uso: MyClient. lt; num1gt; lt; num2gt; "); retorno; } long num1 = long.Parse(args[0]); long num2 = long.Parse(args[1]); SwapClass.Swap(ref num1, ref num2) ; // Tenga en cuenta que la directiva de uso al principio del archivo le permite utilizar un nombre de clase no calificado para hacer referencia al método DLL Console.WriteLine("El resultado del intercambio es num1 = {0} y num2 ={ 1}" , num1, num2); long maxcd = MaxCDClass.MaxCD(num1, num2); Console.WriteLine("El MaxCD de {0} y {1} es {2}", num1, num2, maxcd); el ejecutable MyClient.exe, use la siguiente línea de comando: csc /out:MyClient.exe /reference:MyLibrary.DLL MyClient.cs/out La opción del compilador le indica al compilador que genere un archivo EXE y especifica el nombre del archivo de salida ( MyClient. exe). La opción del compilador /reference especifica el archivo DLL al que hace referencia el programa. 5. Ejecución Para ejecutar el programa, ingrese el nombre del archivo EXE, seguido de dos números, por ejemplo: MyClient 123 456 6. Salida El resultado del intercambio es num1 = 456 y num2 = 123El MaxCD de 456 y 123 es 3 7. Resumen Los enlaces dinámicos tienen las siguientes ventajas: Ahorra memoria y reduce las operaciones de intercambio. Muchos procesos pueden usar una DLL simultáneamente, compartiendo una copia de la DLL en la memoria.
En cambio, para cada aplicación creada con una biblioteca vinculada estáticamente, Windows debe cargar una copia del código de la biblioteca en la memoria. Ahorre espacio en disco. Muchas aplicaciones pueden compartir una copia de la DLL en el disco. En cambio, cada aplicación creada con una biblioteca vinculada estáticamente tiene el código de la biblioteca vinculado a su imagen ejecutable como una copia separada. Actualizar a una DLL es más fácil. Cuando las funciones en una DLL cambian, las aplicaciones que las usan no necesitan volver a compilarse ni vincularse siempre que los parámetros de la función y los valores de retorno no cambien. Por el contrario, el código objeto vinculado estáticamente requiere que la aplicación se vuelva a vincular cuando cambian las funciones. Proporcionar soporte postventa. Por ejemplo, una DLL de controlador de monitor se puede modificar para admitir monitores que no estaban disponibles cuando se envió originalmente la aplicación. Admite programas en varios idiomas. Los programas escritos en diferentes lenguajes de programación pueden llamar a la misma función DLL siempre que el programa siga la convención de llamada de la función. Los programas y las funciones DLL deben ser compatibles en el orden en que la función espera que sus argumentos se inserten en la pila, si la función o la aplicación es responsable de limpiar la pila y si se pasan argumentos en los registros. Proporciona un mecanismo para ampliar las clases de la biblioteca MFC. Puede derivar clases de clases MFC existentes y colocarlas en archivos DLL de extensión MFC para que las utilicen las aplicaciones MFC. Facilita la creación de versiones internacionales. Al colocar recursos en una DLL, crear versiones internacionales de su aplicación se vuelve mucho más fácil. Puede colocar las cadenas para cada versión de idioma de su aplicación en un archivo de recursos DLL separado y hacer que diferentes versiones de idioma carguen los recursos apropiados. Una posible desventaja de utilizar una DLL es que la aplicación no es autónoma y depende de la presencia de un módulo DLL independiente.