Problemas con una DLL MFC que encapsula ADO

18/03/2005 - 13:27 por José Miguel Torres | Informe spam
Buenas, he creado una DLL regular de enlace estático con MFC la cual quiero
que p.e. me devuelva la version de ADO. Es decir que llamado a un método me
devuelve la propiedad Version del objeto ADOConnection y pueda ser llamada
dese fuera.

Pues bien no me sale, a ver si me pueden echar una manita. Hago la llamada
desde C# con DllImport pero me devuelve NULL les adjunto el código...

*********************** CODIGO
// CPP_MRW.dll.cpp : Defines the initialization routines for the DLL.
//

#include "stdafx.h"
#include "CPP_MRW.dll.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

#import <msado15.dll> rename_namespace("MyDL") rename ("EOF", "EOFile")

BEGIN_MESSAGE_MAP(CCPP_MRWdllApp, CWinApp)
END_MESSAGE_MAP()

// CCPP_MRWdllApp construction
CCPP_MRWdllApp::CCPP_MRWdllApp()
{
}


// The one and only CCPP_MRWdllApp object
CCPP_MRWdllApp theApp;


// CCPP_MRWdllApp initialization
BOOL CCPP_MRWdllApp::InitInstance()
{
CWinApp::InitInstance();

return TRUE;
}


extern "C"
_declspec(dllexport)
BSTR WINAPI CCPP_MRWdllApp::Version()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

try{

MyDL::_ConnectionPtr Conn = NULL;
BSTR res = NULL;
HRESULT hr = S_OK;

hr = Conn.CreateInstance( __uuidof( MyDL::Connection ) );

res = Conn->Version;


return res;
}
catch( BSTR * str )
{
return *str;
}

}

******************************************************* HEADER
// CPP_MRW.dll.h : main header file for the CPP_MRW.dll DLL
//

#pragma once

#undef AFX_DATA
#define AFX_DATA AFX_EXT_DATA
// <body of your header file>
#undef AFX_DATA
#define AFX_DATA

#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif

#include "resource.h" // main symbols
//#define WINDLL __declspec(dllexport) CALLBACK

class CCPP_MRWdllApp : public CWinApp
{
public:
CCPP_MRWdllApp();
_declspec(dllexport) BSTR WINAPI Version();

// Overrides
public:
virtual BOOL InitInstance();


DECLARE_MESSAGE_MAP()
};

Muchas gracias desde ya.

slaudos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral [MVP]
18/03/2005 - 15:47 | Informe spam
¿Pero que significa exactamente que no te sale? No compila, no linka, da
errores de ejecución, no sabes como llamar a la dll...


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#2 José Miguel Torres
18/03/2005 - 16:25 | Informe spam
Hola, y gracias por contestar. Significa que me devuelve NULL o cadena
vacía... ahora estaba probando con una DLL Win32 y en lugar de salir "2.80"
que es valor de Version de ADOConnection me sale "2"... creo que es problema
del tipo de retorno BSTR ¿tu que crees? muchas gracias de nuevo

saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es
http://jmtorres.blogspot.com

"Rodrigo Corral [MVP]" escribió en el mensaje
news:
¿Pero que significa exactamente que no te sale? No compila, no linka, da
errores de ejecución, no sabes como llamar a la dll...


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida