C/Visual C - C++ y VB

 
Vista:

C++ y VB

Publicado por Omar (1 intervención) el 13/02/2003 17:17:55
Buenas...
Quisiera saber si hay algo en especial que hacer cuando se compila un projecto de c++ como dll.
La compilacion del mio finaliza correctamente pero cuando intento hacer desde VB la declaracion de una funcion - declare function FUNC lib C.DLL (param1, param2...)- me dice que no encuetra el archivo (obviamente la direccion esta bien)

Gracias,

Omar
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

Problemas al declarar funciones de una DLL en Visual Basic

Publicado por Alejandro (1153 intervenciones) el 05/05/2025 19:50:57
Omar, cuando compilas un proyecto de C++ como una DLL y tienes problemas al intentar declarar funciones desde Visual Basic, hay varios aspectos que debes verificar para asegurarte de que todo esté configurado correctamente. Aquí te dejo algunos pasos y consideraciones:

1. Verifica la ruta de la DLL: Asegúrate de que la DLL esté en la misma carpeta que tu aplicación de Visual Basic o en una ruta que esté incluida en la variable de entorno `PATH`. Si la DLL no se encuentra en una de estas ubicaciones, Visual Basic no podrá cargarla.

2. Exporta las funciones correctamente: Asegúrate de que las funciones que deseas usar en Visual Basic estén correctamente exportadas en tu DLL. Puedes hacerlo utilizando un archivo de definición (DEF) o utilizando el modificador `__declspec(dllexport)` en la declaración de la función. Por ejemplo:

1
2
3
extern "C" __declspec(dllexport) int FUNC(int param1, int param2) {
    // Implementación de la función
}

El uso de `extern "C"` es importante para evitar la "decoración de nombres" que C++ aplica a las funciones, lo que puede causar problemas al intentar llamarlas desde otros lenguajes.

3. Verifica la convención de llamada: Asegúrate de que estás utilizando la convención de llamada correcta. Para Visual Basic, generalmente se utiliza `__stdcall`. Por ejemplo:

1
2
3
extern "C" __declspec(dllexport) int __stdcall FUNC(int param1, int param2) {
    // Implementación de la función
}


En Visual Basic, la declaración sería:

1
Declare Function FUNC Lib "C.DLL" (ByVal param1 As Integer, ByVal param2 As Integer) As Integer

4. Compila en modo Release: Asegúrate de compilar tu DLL en modo Release, ya que a veces las configuraciones de Debug pueden causar problemas de compatibilidad.

5. Revisa los errores de carga: Si aún tienes problemas, puedes utilizar herramientas como Dependency Walker para verificar si hay dependencias faltantes o problemas al cargar la DLL.

6. Prueba con un ejemplo simple: Si el problema persiste, intenta crear una DLL simple con una función básica y verifica si puedes llamarla desde Visual Basic. Esto te ayudará a identificar si el problema está en la configuración de tu proyecto o en el código específico.

Siguiendo estos pasos, deberías poder resolver el problema de declaración de funciones en tu DLL desde Visual Basic.
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