Cargar una dll hecha en VB .net en VC++

23/09/2004 - 10:34 por Sergio | Informe spam
Se puede hacer? Me imagino que si, pero no consiguo hacerlo.

Después de los includes:

...
HMODULE hUserDll;
typedef int(CALLBACK* comprobar) ();
comprobar comprueba = NULL;
...


En el OnIntialUpdate:

...
hUserDll = ::LoadLibrary(_T("SecureSports.dll"));
comprueba = (comprobar)GetProcAddress(hUserDll,"Features");
if (comprueba) {
CString aux;
aux.Format("%d",comprueba());
MessageBox(aux);
}
...


GetProcAddress me devuelve NULL.
El caso es que esta dll usandola desde vb .net funciona, así que no es
que la dll esté mal.

Preguntas similare

Leer las respuestas

#1 pablo crosio
23/09/2004 - 15:42 | Informe spam
hola!

el tema es que con la forma que queres hacerlo
(GetProcAdress), la funcion debe estar exportada en la DLL
y hasta donde se eso no es posible de realizar con las DLL
de VB.NET

por otro lado y muy importante, VB.NET trabaja con codigo
administrado mientras que vos estas queriendo llamarlo
desde codigo no adminitrado (supongo que no trabajas con
VC++.NET); la forma para comunicarse desde VC es a traves
de COM.

fijate en este link que explica como interactuar entre las
distintas plataformas

http://www.msdn.microsoft.com/library/en-
us/cpguide/html/cpconexposingnetframeworkcomponentstocom.as
p

salu2!!

pablo



Se puede hacer? Me imagino que si, pero no consiguo


hacerlo.

Después de los includes:


HMODULE hUserDll;
typedef int(CALLBACK* comprobar) ();
comprobar comprueba = NULL;



En el OnIntialUpdate:


hUserDll = ::LoadLibrary(_T("SecureSports.dll"));
comprueba = (comprobar)GetProcAddress


(hUserDll,"Features");
if (comprueba) {
CString aux;
aux.Format("%d",comprueba());
MessageBox(aux);
}



GetProcAddress me devuelve NULL.
El caso es que esta dll usandola desde vb .net funciona,


así que no es
que la dll esté mal.
.

Respuesta Responder a este mensaje
#2 Sergio
23/09/2004 - 17:54 | Informe spam
pablo crosio wrote:
hola!

el tema es que con la forma que queres hacerlo
(GetProcAdress), la funcion debe estar exportada en la DLL
y hasta donde se eso no es posible de realizar con las DLL
de VB.NET

por otro lado y muy importante, VB.NET trabaja con codigo
administrado mientras que vos estas queriendo llamarlo
desde codigo no adminitrado (supongo que no trabajas con
VC++.NET); la forma para comunicarse desde VC es a traves
de COM.

fijate en este link que explica como interactuar entre las
distintas plataformas

http://www.msdn.microsoft.com/library/en-
us/cpguide/html/cpconexposingnetframeworkcomponentstocom.as
p

salu2!!

pablo



Muchas gracias, travez de intefaces com me funciona.

Una cosa, me da un error al intentar acceder a algunas funciones de la
dll, a otras no. El caso es que el desensamblador se para en una línea
que pone int 3. Sabes a que se puede deber? No es la primera vez que lo
veo, y siempre me pasa cuando intento acceder a alguna dll o algún ocx.
Respuesta Responder a este mensaje
#3 pablo crosio
23/09/2004 - 18:31 | Informe spam
hola!

estas hablando de la DLL en VB.NET no? pues habria que ver
un poco de codigo en VC++ para ver que pasa...

salu2!!

pablo

pablo crosio wrote:
hola!

el tema es que con la forma que queres hacerlo
(GetProcAdress), la funcion debe estar exportada en la




DLL
y hasta donde se eso no es posible de realizar con las




DLL
de VB.NET

por otro lado y muy importante, VB.NET trabaja con




codigo
administrado mientras que vos estas queriendo llamarlo
desde codigo no adminitrado (supongo que no trabajas




con
VC++.NET); la forma para comunicarse desde VC es a




traves
de COM.

fijate en este link que explica como interactuar entre




las
distintas plataformas

http://www.msdn.microsoft.com/library/en-





us/cpguide/html/cpconexposingnetframeworkcomponentstocom.as
p

salu2!!

pablo



Muchas gracias, travez de intefaces com me funciona.

Una cosa, me da un error al intentar acceder a algunas


funciones de la
dll, a otras no. El caso es que el desensamblador se para


en una línea
que pone int 3. Sabes a que se puede deber? No es la


primera vez que lo
veo, y siempre me pasa cuando intento acceder a alguna


dll o algún ocx.
.

Respuesta Responder a este mensaje
#4 Sergio
24/09/2004 - 08:18 | Informe spam
pablo crosio wrote:
hola!

estas hablando de la DLL en VB.NET no? pues habria que ver
un poco de codigo en VC++ para ver que pasa...

salu2!!

pablo





CoInitialize(NULL);
try {
ISecureSportsPtr pSecSp(__uuidof(Sec));
long ret = 0;
pSecSp->Features(&ret); //Esta llamada da error
pSecSp->CheckKey(0,&ret); //Esta llamada da error
pSecSp->ChangeSettings(L"eifajjjaosodii",&ret); //Funciona
} catch(_com_error &e) {
aux.Format("Error: %s",e.Description());
MessageBox(aux);
}

CoUninitialize();


Aunque yo creo que el problema viene por algún componente instalado en
el ordenador.
Respuesta Responder a este mensaje
#5 pablo crosio
24/09/2004 - 19:53 | Informe spam
el problema debe ser en los parametros de llamada puesto
que me comentas que la DLL funciona directamente en .NET

pablo crosio wrote:
hola!

estas hablando de la DLL en VB.NET no? pues habria que




ver
un poco de codigo en VC++ para ver que pasa...

salu2!!

pablo





CoInitialize(NULL);
try {
ISecureSportsPtr pSecSp(__uuidof(Sec));
long ret = 0;
pSecSp->Features(&ret); //Esta llamada da error
pSecSp->CheckKey(0,&ret); //Esta llamada da error
pSecSp->ChangeSettings


(L"eifajjjaosodii",&ret); //Funciona
} catch(_com_error &e) {
aux.Format("Error: %s",e.Description());
MessageBox(aux);
}

CoUninitialize();


Aunque yo creo que el problema viene por algún componente


instalado en
el ordenador.
.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida