C/Visual C - crear dll que utilice funciones de otra dll

 
Vista:

crear dll que utilice funciones de otra dll

Publicado por Jose Donoso (1 intervención) el 19/03/2001 05:33:37
Necesito un ejemplo o informacion de como crear una dll en vc++ 6.0 y que ademas utilice funciones de otra dll. Tengo nociones del Lenguaje C pero no programo habitualmente en el lenguaje hasta hoy.

Atentamente a todos
Jose Donoso
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Crear una DLL en VC++ 6.0 y utilizar funciones de otra DLL

Publicado por Alejandro (1071 intervenciones) el 10/09/2024 23:03:01
¡Hola José! Aquí tienes un ejemplo de cómo crear una DLL en VC++ 6.0 y utilizar funciones de otra DLL:

1. Abre Visual C++ 6.0 y crea un nuevo proyecto de tipo "Win32 Dynamic-Link Library".

2. En el asistente de creación de proyectos, selecciona "An Empty DLL" y haz clic en "Finish" para crear el proyecto.

3. En el Explorador de soluciones, haz clic derecho en el proyecto y selecciona "Add" > "New Item".

4. En la ventana "Add New Item", selecciona "C++ File (.cpp)" y nómbralo como "MyDLL.cpp".

5. En el archivo "MyDLL.cpp", puedes escribir el código para las funciones de tu DLL. Aquí tienes un ejemplo básico:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <windows.h>
 
// Función de ejemplo en la DLL
extern "C" __declspec(dllexport) int Sumar(int a, int b)
{
    return a + b;
}
 
// Función que utiliza una función de otra DLL
extern "C" __declspec(dllexport) int Multiplicar(int a, int b)
{
    HINSTANCE hDLL = LoadLibrary("otraDLL.dll");
    if (hDLL != NULL)
    {
        typedef int (*FuncionMultiplicar)(int, int);
        FuncionMultiplicar multiplicar = (FuncionMultiplicar)GetProcAddress(hDLL, "Multiplicar");
        if (multiplicar != NULL)
        {
            int resultado = multiplicar(a, b);
            FreeLibrary(hDLL);
            return resultado;
        }
        else
        {
            FreeLibrary(hDLL);
            return -1; // Error al obtener la función de la otra DLL
        }
    }
    else
    {
        return -1; // Error al cargar la otra DLL
    }
}

6. Compila el proyecto para generar la DLL.

7. Ahora puedes utilizar la DLL en otro proyecto. Asegúrate de tener la otra DLL (en este ejemplo, "otraDLL.dll") en la misma ubicación que el ejecutable de tu proyecto.

8. En el proyecto donde deseas utilizar la DLL, agrega el archivo de encabezado de la DLL y enlaza la biblioteca importando la función. Aquí tienes un ejemplo básico:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <windows.h>
 
typedef int (*FuncionSumar)(int, int);
typedef int (*FuncionMultiplicar)(int, int);
 
int main()
{
    HINSTANCE hDLL = LoadLibrary("MyDLL.dll");
    if (hDLL != NULL)
    {
        FuncionSumar sumar = (FuncionSumar)GetProcAddress(hDLL, "Sumar");
        FuncionMultiplicar multiplicar = (FuncionMultiplicar)GetProcAddress(hDLL, "Multiplicar");
        if (sumar != NULL && multiplicar != NULL)
        {
            int resultadoSuma = sumar(2, 3);
            int resultadoMultiplicacion = multiplicar(2, 3);
            std::cout << "Resultado de la suma: " << resultadoSuma << std::endl;
            std::cout << "Resultado de la multiplicacion: " << resultadoMultiplicacion << std::endl;
        }
        else
        {
            std::cout << "Error al obtener las funciones de la DLL" << std::endl;
        }
        FreeLibrary(hDLL);
    }
    else
    {
        std::cout << "Error al cargar la DLL" << std::endl;
    }
 
    return 0;
}

Recuerda reemplazar "MyDLL.dll" por el nombre de tu DLL y "otraDLL.dll" por el nombre de la otra DLL que deseas utilizar.

Espero que este ejemplo te sea útil para crear una DLL en VC++ 6.0 y utilizar funciones de otra DLL. ¡Buena suerte con tu programación en C++!

Saludos cordiales,
Ale
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar