Hola a todos,
tengo una dll que publica una interfaz con dos métodos para poder ser usados desde otra librería realizada en c++.
El problema que tengo es que con uno de ellos funciona correctamente y con el otro directamente no hace ni caso y se salta la línea sin dar ningún error.
Este es el código de la dll de c#:
namespace ManagedDLL
{
// Interface declaration.
[Guid("1D2DD075-8911-4589-B772-E7F05000CC09")]
public interface IRasSPFdlg
{
int Datos(string Conexion, out string Usuario, out string Pass);
int Propiedades(ref string Modem, ref string Telefono);
};
// Interface implementation.
[ClassInterface(ClassInterfaceType.None)]
[Guid("A0E1695F-D85A-49ee-AD7A-D4C7105CAD32")]
public class ManagedClass : IRasSPFdlg
{
public int Datos(string Conexion, out string Usuario, out string Pass)
{
........ CODIGO DE LA FUNCIÓN
}
public int Propiedades(ref string Modem, ref string Telefono)
{
........ CODIGO DE LA FUNCIÓN
}
Este es el código de la llamada c++:
ESTE ES EL QUE FUNCIONA:
extern "C" long __declspec (dllexport) __stdcall RasCustomNetDLG(BSTR Conexion, BSTR *Usuario, BSTR *Password)
{
long lResult = 0;
HRESULT hr = CoInitialize(NULL);
ManagedDll::IRasSPFdlgPtr pICalc(__uuidof(ManagedDll::ManagedClass));
pICalc->Datos(Conexion, Usuario, Password, &lResult);
CoUninitialize();
return lResult;
}
ESTE, IDENTICO, ES EL QUE NO FUNCIONA:
extern "C" long __declspec (dllexport) __stdcall RasCustomNetProp(BSTR *Modem, BSTR *Telefono)
{
long lResult = 0;
HRESULT hr = CoInitialize(NULL);
ManagedDll::IRasSPFdlgPtr pIRasSPF(__uuidof(ManagedDll::ManagedClass));
pIRasSPF->Propiedades(Modem, Telefono, &lResult);
lResult = pIRasSPF->Propiedades(Modem, Telefono);
Este es el código del que pasa y simplemente salta a la siguiente líneaCoUninitialize();
return lResult;
}
}
}