FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
importar una dll de c++
Hola chicos a ver si alguin me puede decir por que esto no funciona
Código:
fichero de cabecera .h #ifndef _CGLOGICSWINAPI_H_ #define _CGLOGICSWINAPI_H_ #if _MSC_VER > 1000 #pragma once #endif #ifdef __cplusplus extern "C" { // only need to export C interface if used by C++ source code #endif #ifdef _COMPILING_THE_DLL_ #define CGLOGICS_API __declspec(dllexport) #else #define CGLOGICS_API __declspec(dllimport) #endif // API functions recommended for new integrations CGLOGICS_API short __stdcall registerEvents3CG( void (__cdecl *cgStatusCall)( int amount, short status, short mode ), void (__cdecl *cgErrorCall)( int errorCode, char* errorText, char* extInfo ), void (__cdecl *cgLevelWarningCall)( short warningType, long denomination, short numberOf, char* typeString, #ifdef __cplusplus } #endif #endif
y asi es como lo llamo desde mi programa
alguna idea de porque cuando ejecuto el boton "Ini apli" me da el siguiente error --------------------------- Cashguard --------------------------- Access violation at address 100332F9 in module 'CGLOGICS.DLL'. Write of address 00404DBD. --------------------------- Aceptar --------------------------- gracias espero sus respuestas Última edición por nlsgarcia fecha: 09-11-2014 a las 05:47:47. |
#2
|
||||
|
||||
Creo que has copiado mal el archivo de cabecera de C. Me falta un parámetro (o más) en la función de registro.
De todas formas, visto por encima, las declaraciones están bien. ¿Has depurado paso a paso a ver cómo hace la llamada, y si los parámetros son los correctos? |
#3
|
||||
|
||||
Coincido con Ñuño Martínez en que no has copiado bien el archivo cabecera C:
Código:
void (__cdecl *cgLevelWarningCall)( short warningType, long denomination, short numberOf, char* typeString, #ifdef __cplusplus Por otro lado, la función registerEvents3CG recibe como parámetros punteros a funciones void C. En delphi debes pasar los punteros a los procedimientos adecuados. Es importante saber como están exportadas las funciones C en esa dll, en algunas ocasiones aparecen "nombres decorados", con la dll en la mano, lo podemos saber. Sin las declaraciones correctas en C y sin la dll en cuestión, no se te puede ofrecer más ayuda. Saludos. Última edición por escafandra fecha: 11-11-2014 a las 20:15:41. |
#4
|
||||
|
||||
Cierto. Y pensando en ello, y si no recuerdo mal, hay un standard de facto en C en el que se añade el carácter subrayado a los nombres de función dentro de las DLL, y en C++ se añaden caracteres para indicar el número y tipo de los parámetros, por aquello de la sobrecarga de funciones.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Importar un txt | jafera | Conexión con bases de datos | 10 | 25-12-2009 16:55:22 |
Importar ActiveX | sanyco | Varios | 1 | 15-09-2006 02:42:13 |
Importar una dll | vasgab | API de Windows | 0 | 21-07-2006 23:44:09 |
Importar DBF a Gdb | vtdeleon | Firebird e Interbase | 4 | 14-05-2005 18:16:40 |
importar de excel | joanajj | Servers | 3 | 04-08-2004 12:35:02 |
|