Forums Últimos mensajes - Powered by IBM
 

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
 

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

Preguntas similares