C/Visual C - ¡Necesito ayuda Urgente!

 
Vista:

¡Necesito ayuda Urgente!

Publicado por Tony (8 intervenciones) el 04/06/2003 12:31:07
He desarrollado una dll en visual c que manipula hojas de calculo de excel (escribo en sus celdas, pongo las letras en negrita o cursiva,etc)

Los dartos de cual libro abrir, qe celda modificar, qe datos escribir en dicha celda,etc. estan en el interior de la dll.
Prob la dll desde visual basic y funciono correctamente.

Luego cambie la dll para que los datos para los cambios fueran parametros de entrada de la libreria. (Uso el mismo tipo de datos que use en el interior de la dll) Pero ahora sucede una serie de errores durante la ejecucuion de la aplicacion que no se a que son debidos

El mensaje de error pone esto:

Debug Error!

Program D:\Microsoft Visual Studio\VB98\VB6.EXE
//trabajo en la unidad logica de mi disco duro D://

abnormal program termination

Pres Retry to debug the application

Pulse el boton qe pulse se cierra visual.

¿A q puede ser debido si la dll es la copia de la anterior qe funcionaba correctamente co los datos internos?

Ya comprobe si la entrada de datos era erronea pero es correcta.

Por si sirve de algo la cabecera d la funcion de la dll es:

//en la anterior dll tambien trabajo con este tipo de datos y funciona//

int WINAPI modificar (LPTSTR libro, LPTSTR pos,
LPSTR valor, int N , int K)

la llamada desde VB la hago:

en un modulo:
Declare Function modificar Lib
"C:\Mis documentos\C++\MEXCEL\Debug\MEXCEL.dll"
(ByVal f As String, ByVal p As String, ByVal v As String)
As Long ', n As Intege
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

¡Necesito ayuda Urgente!

Publicado por Alejandro (1190 intervenciones) el 02/07/2025 00:55:58
El error que estás experimentando al utilizar tu DLL en Visual Basic puede deberse a varios factores, especialmente al cambiar la forma en que se pasan los parámetros a la función. Aquí hay algunas sugerencias y pasos que puedes seguir para diagnosticar y resolver el problema:

1. Verifica la declaración de la función


Asegúrate de que la declaración de la función en Visual Basic coincida exactamente con la definición en la DLL. En tu caso, parece que la declaración en VB no incluye los parámetros `N` y `K`, que son parte de la definición original. Asegúrate de que la declaración en VB sea correcta:

1
2
3
Declare Function modificar Lib "C:\Mis documentos\C++\MEXCEL\Debug\MEXCEL.dll" _
    (ByVal f As String, ByVal p As String, ByVal v As String, _
    ByVal N As Long, ByVal K As Long) As Long

2. Verifica el tipo de datos


Asegúrate de que los tipos de datos que estás utilizando en la DLL y en Visual Basic sean compatibles. En tu caso, `LPTSTR` en C++ puede ser un puntero a un string, y en VB, deberías asegurarte de que estás pasando cadenas de texto correctamente.

- `LPTSTR` se puede mapear a `String` en VB, pero asegúrate de que el tipo de datos que estás pasando sea el correcto.
- Para los parámetros `N` y `K`, asegúrate de que estás pasando valores de tipo `Long` en VB.

3. Manejo de errores en la DLL


Agrega manejo de errores en tu DLL para capturar cualquier excepción o error que pueda estar ocurriendo. Esto puede ayudarte a identificar el problema. Por ejemplo:

1
2
3
4
5
6
7
8
9
int WINAPI modificar(LPTSTR libro, LPTSTR pos, LPSTR valor, int N, int K) {
    try {
        // Tu código para manipular Excel aquí
    } catch (...) {
        // Manejo de errores
        return -1; // O un código de error específico
    }
    return 0; // Éxito
}

4. Verifica la lógica de la DLL


Revisa la lógica dentro de la función `modificar` para asegurarte de que no haya errores que puedan causar una terminación anormal. Asegúrate de que todas las operaciones con Excel se realicen correctamente y que no haya accesos a memoria no válidos.

5. Prueba con datos simples


Intenta llamar a la función `modificar` con datos simples y conocidos para ver si el problema persiste. Esto puede ayudarte a identificar si el problema está relacionado con los datos que estás pasando.

6. Usa un depurador


Si el problema persiste, considera usar un depurador para ejecutar tu aplicación y la DLL. Esto te permitirá ver exactamente dónde ocurre el error y qué datos se están pasando en ese momento.

7. Revisa la documentación de Excel


Si estás utilizando la API de Excel, asegúrate de que estás siguiendo las pautas y requisitos de la documentación de Excel para manipular hojas de cálculo.

8. Revisa el entorno de ejecución


Asegúrate de que todas las dependencias necesarias para tu DLL estén presentes y que no haya conflictos de versiones entre las bibliotecas que estás utilizando.

¡Buena suerte, Tony!
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