FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Como cargar una DLL hecha en delphi desde c++?
He hecho una DLL en Delphi, y no la puedo cargar desde C++, me da error exactamenete cuando invoco alguna función de la DDL. Necesito cargar la DLL de forma estática y lo he hecho a partir de las funciones del API LoadLibrary y GetProcAddress.
De la DLL necesito crear instacias de un par de objetos e invocar algunas funciones propias de esos objetos. Si alguien me puede dar un hint de porque el error o tiene algo de esto hecho se lo agradeceré. también me pueden enviar sus ayudas a ege@lab.matcom.uh.cu Gracias... |
#2
|
|||
|
|||
Hola Ege, bienvenido al club
Te invito a que leas nuestra guia de estilo ya que estas infringiendola en dos situaciones que no están permitidas.
Además, para que se te pueda ayudar de una forma mas certera seria bueno que colocaras el código que estas usando para llamar a tu DLL para no estar adivinando el problema. Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#3
|
|||
|
|||
Esclareciendo
Mis disculpas por las infracciones.
Para tratar de obtener, la vinculación de la DLL con Delphi, realicé una DLL sencilla que solamente contiene la función function plusone(val : Integer) : Integer; export; stdcall; que simplemente suma 1 al parámetro val En el archivo DPR incluí la cláusula export de la siguiente manera Exports plusone name 'plusone@4', La clase de C++ que cargará la DLL es así /* Carga.h*/ #define USELIB #ifdef USELIB extern "C" { int __declspec(dllimport) __stdcall plusone(int); } #endif //USELIB ref class Carga { public: Carga(void); ~Carga(void); int SumaUno(int i); protected: #ifndef USELIB HINSTANCE hMyDLL; FARPROC lpfnplusone; typedef int (*pIIFUNC)(int); pIIFUNC plusone; #endif //USELIB /*Carga.cpp*/ #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif Carga::Carga(void) { #ifndef USELIB hMyDLL = LoadLibrary("D:\\Delphi to C++\\DLL\\MyDLL.dll"); if(hMyDLL == NULL) PostQuitMessage(1); lpfnplusone = GetProcAddress(HMODULE(hMyDLL), "_plusone"); if(lpfnplusone == NULL) PostQuitMessage(2); plusone = pIIFUNC(lpfnplusone); #endif //USELIB } Carga::~Carga(void) { #ifndef USELIB if (hMyDLL != NULL) FreeLibrary(hMyDLL); #endif //USELIB } int Carga::SumaUno(int i) { int temp = plusone(i); return i; } El error a la hora de compilar es el siguiente: Error 1 error LNK2028: unresolved token (0A00000A) "extern "C" int __stdcall plusone(int)" (?plusone@@$$J14YGHH@Z) referenced in function "public: int __clrcall Carga::SumaUno(int)" (?SumaUno@Carga@@$$FQ$AAMHH@Z) Carga.obj Gracias anticipadas y disculpen lo extenso que quedó el mensaje |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como cargar qrpt70.bpl paquete desde delphi | JODELSA | Impresión | 3 | 04-03-2016 09:51:55 |
Como instalo una aplicacion hecha en delphi 6. con bdd de paradox sin instalar delphi | CarlosHernandez | Tablas planas | 5 | 17-06-2011 18:27:09 |
Como cargar una DLL hecha en delphi desde c++? | Ege | API de Windows | 0 | 03-03-2008 22:03:37 |
Como cargar un fichero .js desde PHP | maro | PHP | 2 | 03-10-2007 19:31:02 |
Como puedo cargar un SQL DTS desde Delphi? | Elektron | Conexión con bases de datos | 2 | 31-07-2003 11:03:52 |
|