| Casa | Hardware | Redes | Programación | software | Criticar | Sistemas |   
Programación  
  • C /C + + Programming

  • Lenguajes De Programación

  • Delphi Programación

  • Programación Java

  • JavaScript Programación

  • Programación PHP /MySQL

  • Perl Programming

  • Python Programming

  • Rubí Programación

  • Visual Basics Programación
  •  
    Conocimientos Informáticos >> Programación >> C /C + + Programming >> Content
    Dinámica Llamar a funciones en archivos DLL
    Una librería de enlace dinámico o DLL , permite a una aplicación cargar sólo el código ejecutable mínimo necesario en la memoria en tiempo de ejecución . Cada vez que el programa llama a una función en una DLL, el sistema operativo carga la DLL en la memoria , de acuerdo con las especificaciones del programador . Mientras el programa en ejecución no hace referencia a una función de DLL , DLL que no necesita ocupar un espacio . Esto ahorra una gran cantidad de recursos y aumenta el rendimiento en tiempo de ejecución . Si la biblioteca no son estáticas , todo el código de la biblioteca sería anexado al código ejecutable del programa principal y el programa gigante tendría que permanecer en la memoria de todo el tiempo de ejecución. La versión de Unix o Linux de una DLL de Windows es una biblioteca compartida , construida de acuerdo con la extensión " . Así . " Windows , Unix y Linux tienen convenios específicos para acceder a funciones de DLL o bibliotecas compartidas . Exportar objetos de Windows DLL Uso dllexport Keyword

    Para hacer una función , clase, dato o función miembro de la clase a disposición del programa de Windows que llama, debe exportarlo primero . Una clase o función pueden ser exportados en su definición a través del " __declspec ( dllexport ) " de palabras clave antes del nombre de la función , clase o variable , de la siguiente manera :

    Void __ declspec ( dllexport ) MyClass : cObjectName pública { ..... }

    En el archivo de encabezado DLL, puso esta palabra clave antes de que el nombre de la función en una declaración prototipo. El " __declspec ( dllexport ) " palabra clave almacena los nombres de las funciones de la tabla de exportación del archivo DLL. Para economizar el espacio que ocupa esta tabla , utilice números ordinales en lugar de los nombres de función .
    Exportación Objetos Windows DLL través del módulo de archivos de definición de

    Como alternativa a la palabra clave " __declspec ( dllexport ) , "crear un archivo de definición de módulo que establece el nombre de la biblioteca , una descripción opcional y se enumeran los nombres de funciones, clases y variables de datos en el archivo DLL con valores ordinales opcionales. El valor ordinal de una función varía de 1 a N, donde N es el número de funciones en la DLL . El archivo de definición de módulo tiene la extensión que sigue es un ejemplo de un archivo de definición de módulo, o un archivo DEF " DEF . ". : .

    BIBLIOTECA ReportWriterDESCRIPTION Esta biblioteca dinámica contiene la funcionalidad del generador de informes de MyProduct.RPT_setup @ 1RPT_design 2RPT_run @ @ @ 3RPT_print 4

    Si crea un archivo DLL Microsoft Foundation Class utilizando el Asistente para aplicaciones de Visual Studio, el asistente generará un archivo de esqueleto. DEF para el DLL y agregarlo al proyecto. Agregue entradas para las funciones de DLL en el archivo . DEF para exportarlos . El formato del prototipo de función que utiliza el programa de llamada debe coincidir con el formato de las entradas de función en el archivo . DEF . O bien utilizar las definiciones simples en ambos lugares, o compilador específico , las definiciones de ambos lugares constantemente .
    Importación y Exportación de extensión DLL

    Microsoft generado por el compilador Foundation Class extensión DLL normalmente se compone de clases reutilizables derivadas de los tipos de clases de MFC existentes. Están construidos con una versión DLL de MFC , y pueden ser llamados desde las aplicaciones y DLLs creadas con esta versión compartida de MFC . Para exportar clases en archivos DLL de extensión , utilice la macro " AFX_EXT_CLASS " antes del nombre de la clase como esta: Clase CMyViewClass AFX_EXT_CLASS : CView público { /cuerpo /clase} ; Si utiliza un archivo DEF , agregue el siguiente código de macro en el principio. y al final del archivo de cabecera DLL extendido: # undef AFX_DATA # define AFX_DATA AFX_EXT_DATA // extendida # undef AFX_DATA # define AFX_DATA

    Estas directivas de preprocesador asegurarse de que las variables de MFC y derivaciones y exportados de la DLL extendida.
    Importación funciones DLL

    la otra cara de exportar objetos de DLLs que está importando en las aplicaciones que utilizan el " __declspec ( dllimport ) " palabras clave .
    exportación C Funciones para el uso en C o C + + ejecutables

    Si el programa o función que llama está escrito en C + + , utilice el " extern C " directiva de preprocesador en la cabecera del archivo DLL si las funciones DLL están escritas en C.

    He aquí un ejemplo ://MyDLLFunctions.h # ifdef __ cplusplusExtern "C " {# endif__declspec ( dllimport ) MyFunc01 void (); __declspec ( dllimport ) void MyFunc02 (); # ifdef __ cplusplus } /soportes /end para " extern C" directiva # endif

    Como alternativa a la especificación de la " extern C " directiva dentro de la cabecera DLL, que puede incluir el archivo de cabecera DLL con una " extern" C " " contenedor condicional , de la siguiente manera :

    # ifdef __ cplusplusExtern "C " {# endif

    # include " DLLPath \\ MyDLLFunctions.h "

    # ifdef __ cplusplus } //fin de soportes para " extern C" directiva # endif

    Previous :

    next :
      Artículos relacionados
    ·Cómo eliminar a + + Montón C Corrupt 
    ·Cómo utilizar la función strstr en C + + 
    ·Cómo crear una lista doblemente enlazada en C Programa…
    ·Cómo programar juegos en C + + 
    ·¿Cuál es el significado de la norma ANSI 
    ·Cómo cambiar un factor de relleno 
    ·Cómo hacer una matriz de cadenas 
    ·Cómo hacer un juego RPG en C + + 
    ·Cómo crear una pk3 Archivo 
    ·¿Cómo colocar un archivo de texto en un vector de est…
      Artículos destacados
    ·Cómo supervisar un conjunto de conexiones de Sun Java …
    ·¿Qué es un controlador Mirage 
    ·Cómo consultar varias bases de datos en Access 
    ·Cómo escribir un applet que pide al usuario que introd…
    ·Cómo agregar una línea a un cuadro de texto en Visual…
    ·Cómo manejar los navegadores antiguos con javascript 
    ·Cómo hacer un convertidor de números romanos en el Có…
    ·ANSI codificación en C # 
    ·HTML cuadro desplegable Tutorial 
    ·Cómo hacer un VAR global en Python 
    Copyright © Conocimientos Informáticos http://ordenador.wingwit.com