Archivo .def frente a __declspec (dllexport)

 

Publi

Resultados 1 al 7 de 7

Tema: Archivo .def frente a __declspec (dllexport)

  1. #1
    Hola,
    Estoy algo confundido con respecto a la
    Archivos .def y #define MT4_EXPFUNC __declspec(dllexport)

    Entiendo que utilizar� archivos .def y funciona.

    Sin embargo, �sab�a cuando defino algo como

    C�digo PHP: <code><span style=�color: #000000�> <span style=�color: #0000BB�></span><span style=�color: #FF8000�>#defineMT4_EXPFUNC__declspec(dllexport)
    </span><span style=�color: #0000BB�></span> </span> </code> Omitir� el archivo .def.


    Http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx

    �Entend� mal esto?

    Alguien sabe c�mo configurarlo correctamente en Visual Studio Express 2008 C

    Muchas gracias.

  2. #2
    Esta es solo mi opini�n basada en experimentos: 1. Al poner __declspec (dllexport) delante del anuncio de la funci�n O con el archivo def, le informa al compilador que exporte ese prop�sito. En caso de que no use el archivo def ni la palabra clave __declspec (dllexport), su prop�sito no se exportar�. 2. __declspec (dllexport) exportar� la funci�n usando un t�tulo decorado como? Orig_function_name@@xxx, mientras que el archivo def exportar� la funci�n con el nombre original 3. La utilizaci�n del archivo def le dar� un nombre de funci�n sin decorar si utiliza el archivo def, en mi opini�n, no es necesario utilizar __declspec (dllexport)

  3. #3
    Tal vez necesite hacer este tipo de preguntas en los foros de soportelistas de correo para el compilador que est� usando, all� probablemente encontrar� a los profesionales de C que entienden este compilador por dentro y por fuera y pueden explicarle cada detalle sobre c�mo funciona y exactamente lo que puede/podr�a/deber�a hacer (o no hacer) y las razones/implicaciones/ventajas/desventajas. Desafortunadamente, no puedo ayudarlo porque no uso compiladores de Microsoft (y ni siquiera uso C en absoluto).

  4. #4
    Gracias chicos. Tal vez formul� mi pregunta incorrectamente: Entonces decimos: 1. Utilizamos archivos .def pero en ese caso �Por qu� todav�a usamos: #define MT4_EXPFUNC __declspec (dllexport)
    http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspxMicrosoft introdujo __export en la edici�n del compilador de 16 bits de Visual C para permitir que el compilador genere los t�tulos de exportaci�n autom�ticamente y los coloque en un archivo .lib. Este archivo .lib se puede usar posteriormente exactamente como un .lib est�tico para vincular usando una DLL. En las versiones m�s recientes del compilador, puede exportar datos, funciones, clases o funciones de miembros de clase desde una DLL mediante la palabra clave __declspec(dllexport). __declspec(dllexport) agrega la directiva de exportaci�n al archivo del elemento para que no tenga que usar un archivo .def. No quiero decir: si uso un archivo - def, no tiene mucho sentido usar #define MT4_EXPFUNC __declspec (dllexport) Mi pregunta reformulada ser�a: �Hay alguna otra buena raz�n para usar ' #define MT4_EXPFUNC __declspec (dllexport)' aunque uno tiene un archivo .def?

  5. #5
    De la menci�n de MQL:
    Cita Iniciado por ;
    Las funciones importadas de DLL a un programa mql4 deben ofrecer una convenci�n de vinculaci�n aprobada para las funciones de la API de Windows. Para proporcionar dicha conferencia, la palabra clave __stdcall espec�fica para compiladores de la empresa Microsoft(r) se utiliza en los c�digos fuente del programa escrito en lenguaje C o C .
    Posteriormente, use el archivo def para evitar que se decore el nombre de la funci�n.

  6. #6
    Usamos el archivo def para escribir el nombre de los prop�sitos que necesitamos que el mundo externo (metatrader en nuestro caso) vea y use. En caso de que no haya escrito el nombre de la funci�n en el archivo de definici�n, obtendr� un t�tulo de funci�n muy extra�o. Por favor vea mi art�culo sobre:
    http://www.xpworx.com/metatrader-mql...ension-dll.php[QUOTE=;]hola, estoy un poco confundido acerca de los archivos .def y #define MT4_EXPFUNC __declspec(dllexport) Entiendo que puedo usar archivos .def y funciona. Sin embargo, entend� una vez que especific� algo como C�digo PHP: <code><span style=�color: #000000�> <span style=�color: #0000BB�></span><span style=�color: # FF8000�>#defineMT4_EXPFUNC__declspec(dllexport) </span><span style=�color: #0000BB�></span> </span> </code> Puedo omitir el archivo .def.
    Http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx�Puedo malinterpretar esto? Alguien sabe c�mo corregir eso en Visual Studio Express 2008 C Muchas gracias. [/CITA]

  7. #7

    Cita Iniciado por ;
    esta es solo mi opini�n basada en experimentos: si utiliza el documento def, en mi opini�n, no es necesario utilizar __declspec (dllexport)
    Lo sab�a exactamente de la misma manera: solo me hab�a preguntado, p. que el c�digo de muestra de MT4 se utiliz� por igual. Gracias.

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Cookies
Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede cambiar la configuración u obtener más información y política de cookies aquí.