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