es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función de exportación desde un archivo exe a un proyecto de dll en C++.

Programo en Visual Studio en C++. Tengo un proyecto que es un servidor y el segundo proyecto es una DLL que se puede cargar en el servidor. Para poder enviar algunos comandos especiales a través de la DLL, necesito pasarle una función desde el servidor. Intenté exportar funciones del servidor de esta manera:

extern "C" __declspec(dllexport) void send_peer_command(Peer* peer, const std::string& lua_command);

Pero no funciona. Así que necesito exportar una función desde el archivo .exe al proyecto de la DLL en C++. He intentado varias formas pero no he tenido éxito, por favor dime cómo hacerlo. Sé que esta no es la mejor solución, pero necesito hacerlo urgentemente. Sé que hay formas de hacer esto, pero hay pocos ejemplos de esto, solo si puedes darme un ejemplo sencillo, eso es todo lo que necesito.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para exportar una función de un archivo ejecutable a un proyecto de DLL en C++, puedes seguir estos pasos:

    1. Define la función que deseas exportar en tu proyecto de servidor.
    extern "C" __declspec(dllexport) void send_peer_command(Peer* peer, const std::string& lua_command);
    
    1. Agrega un archivo .def a tu proyecto de servidor. Este archivo enumerará todas las funciones que deseas exportar desde el archivo ejecutable.
    LIBRARY servidor
    EXPORTS
    send_peer_command
    
    1. Compila el proyecto de servidor para crear el archivo .dll y el archivo .lib.
    2. En tu proyecto de DLL, agrega un archivo de encabezado para la función que deseas utilizar del proyecto de servidor.

    extern "C" __declspec(dllimport) void send_peer_command(Peer* peer, const std::string& lua_command);
    
    1. Vincula el archivo .lib del proyecto de servidor con el proyecto de DLL. Puedes hacer esto agregando el archivo .lib a las Dependencias Adicionales en las opciones del enlazador del proyecto de DLL.

    2. Llama a la función exportada desde el proyecto de DLL.

    send_peer_command(peer, command);
    

    Ten en cuenta que es posible que debas ajustar estos pasos para que se adapten a tu proyecto específico y entorno de construcción.

Comments are closed.