Foros del Web » Programación para mayores de 30 ;) » .NET »

Crear Dll en .net y utilizarla en vb6

Estas en el tema de Crear Dll en .net y utilizarla en vb6 en el foro de .NET en Foros del Web. Hola buenos días, quería consultarle a ver si alguien me puede ayudar. Tengo hecha una dll en .net y la quiero llamar desde VB6. Tengo ...
  #1 (permalink)  
Antiguo 09/09/2014, 10:44
 
Fecha de Ingreso: junio-2009
Mensajes: 5
Antigüedad: 14 años, 9 meses
Puntos: 0
Crear Dll en .net y utilizarla en vb6

Hola buenos días, quería consultarle a ver si alguien me puede ayudar. Tengo hecha una dll en .net y la quiero llamar desde VB6.
Tengo este ejemplo:
Código #C.NET
namespace net2COMCS
{
public class SaludoCS
{
public string Saludar()
{
return "Hola desde .NET (#C)";
}
}
}
Código VB6
Código VB:
Ver original
  1. Private sub cmdSaludoCS_Click()
  2.     dim oCS As net2COM_1CS.SaludocS
  3.     set oCS = New net2COM_1CS.SaludoCS
  4.     Me.Text1.Text = oCS.Saludar
  5. end sub

Yo implemento lo mismo, nada más que la funcion mia en .net se llama enviar correo y le paso unos parametros, y en vb6 en vez de un textbox la recibo en una variable de tipo string.

Desde VB6 llamo de esta forma a la funcion de .net, esta claro que ya agregue la referencia de .net en vb6.
Código VB:
Ver original
  1. Dim mailok As String
  2.     Dim MailCS As correossl.Correo
  3.     Set MailCS = New correossl.Correo
  4.     mailok = MailCS.EnviarCorreoGmail(SSLTo, SSLFrom, "ejemplo", SSLSubject, SSLBody, "", SSLPassword, SSLPort)
Alguno me puede ayudar, que me puede estar faltando, el error que me da el visual es "ActiveX component can't create object" en la linea donde se hace el set.
Gracias.
Saludos.
  #2 (permalink)  
Antiguo 10/09/2014, 16:02
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 18 años, 11 meses
Puntos: 16
Respuesta: Crear Dll en .net y utilizarla en vb6

Buenas compañero,

A simple vista, lo único que puedo decirte es que el espacio de nombre de creación es "net2COMCS" y el que estás usando es "net2COM_1CS"...
Eso en .Net petaría fijo... Imagino que en VB6.0 igual...


Un saludo!!!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #3 (permalink)  
Antiguo 11/09/2014, 11:45
 
Fecha de Ingreso: junio-2009
Mensajes: 5
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Crear Dll en .net y utilizarla en vb6

Lo que vos me decís es correcto, lo que yo digo es supongamos que yo tengo la dll en .NET:
Código C#:
Ver original
  1. using System.Linq;
  2. using System.Text;
  3. using System.Net;
  4. using System.Net.Mail;
  5. using System.Net.Mime;
  6. using System.Runtime.InteropServices;
  7.  
  8. [assembly: ClassInterface(ClassInterfaceType.AutoDual)]
  9.  
  10. namespace correossl
  11. {
  12.     [ProgId("correossl.correoSsl")]
  13.     public class CorreoSsl
  14.     {
  15.         public interface ICorreoSSL {
  16.             string EnviarCorreoGmail(string destinatario, string remitente, string nombre, string asunto, string cuerpo, string attach, string password, int puerto);
  17.         }
  18.  
  19.         public string EnviarCorreoGmail(string destinatario, string remitente, string nombre, string asunto, string cuerpo, string attach, string password, int puerto)
  20.         {
  21.             try
  22.             {
  23.                
  24.                 System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
  25.                 msg.To.Add(destinatario);
  26.                 msg.From = new MailAddress(remitente, nombre, System.Text.Encoding.UTF8);
  27.                 msg.Subject = asunto;
  28.                 msg.SubjectEncoding = System.Text.Encoding.UTF8;
  29.                 msg.Body = cuerpo;
  30.                 msg.Attachments.Add(new Attachment(attach));
  31.                 msg.BodyEncoding = System.Text.Encoding.UTF8;
  32.                 msg.IsBodyHtml = false;
  33.                 SmtpClient client = new SmtpClient();
  34.                 client.Credentials = new System.Net.NetworkCredential(remitente, password);
  35.                 client.Port = 587;
  36.                 client.Host = "smtp.gmail.com";
  37.                 client.EnableSsl = true;
  38.                 client.Send(msg);
  39.                 return "Enviado";
  40.  
  41.             }
  42.             catch (System.Net.Mail.SmtpException ex)
  43.             {
  44.                 return ex.Message;
  45.             }
  46.         }
  47.     }
  48. }

Mi problema es que cuando la llamo de visual basic 6, de esta forma:
Código VB:
Ver original
  1. Dim mailok As String
  2.     Dim MailCS As correossl.Correo
  3.     Set MailCS = New correossl.Correo
  4.     mailok = MailCS.EnviarCorreoGmail(SSLTo, SSLFrom, "ejemplo", SSLSubject, SSLBody, "", SSLPassword, SSLPort)
Y el error que me esta dando es: "ActiveX component can't create object" en la linea donde hago el SET...
Gracias. Espero que se entienda.
Saludos.
  #4 (permalink)  
Antiguo 11/09/2014, 13:12
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 18 años, 11 meses
Puntos: 16
Respuesta: Crear Dll en .net y utilizarla en vb6

Bueno, aunque yo no entiendo de VB6... Te hago una serie de preguntas/sugerencias a ver si suena la campana....

Has comprobado... Dependencias de la DDL que estás agregando?
Necesitarías registrarla en el GAC?

Si el ejemplo que has puesto, es el real, la llamada estaría mal igualmente... Debería ser:
Dim MailCS As correossl.CorreoSsl
Set MailCS = New correossl.CorreoSsl

Esto sería un ensamblador distinto al que tienes la clase de correossl? Si es así... La de correossl tiene dependencia de ella y la has agregado al proyecto donde usas correossl?
[assembly: ClassInterface(ClassInterfaceType.AutoDual)]

Espero que alguna de estas "ideas" te haya sido de utilidad :)
Sino... Cuando encuentres la solución posteala!!!


Un saludo compañero!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #5 (permalink)  
Antiguo 11/09/2014, 23:06
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Respuesta: Crear Dll en .net y utilizarla en vb6

Ya registraste tu DLL con el comando MSDOS REGSVR32??
  #6 (permalink)  
Antiguo 12/09/2014, 06:08
 
Fecha de Ingreso: junio-2009
Mensajes: 5
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Crear Dll en .net y utilizarla en vb6

Si la registre de la forma que se indica en la página: [URL="http://easytipsprogramacion.blogspot.com.ar/2009/11/crear-un-ensamblado-en-c-net-y-usarlo.html"]http://easytipsprogramacion.blogspot.com.ar/2009/11/crear-un-ensamblado-en-c-net-y-usarlo.html[/URL].
Me equivoque en el post anterior, en el VB llamo de la siguiente forma a la DLL:
Código VB:
Ver original
  1. Dim mailok As String
  2.     Dim MailCS As correossl.CorreoSsl
  3.     Set MailCS = New correossl.CorreoSsl
  4.     mailok = MailCS.EnviarCorreoGmail(SSLTo, SSLFrom, "ejemplo", SSLSubject, SSLBody, "", SSLPassword, SSLPort)
Y el error me lo da en la linea del Set.
Si alguien puede ayudarme se los agradezco.
Saludos.
  #7 (permalink)  
Antiguo 15/09/2014, 16:09
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 18 años, 11 meses
Puntos: 16
Respuesta: Crear Dll en .net y utilizarla en vb6

No se me ocurre nada más compañero, si encuentras la solución publicala para que el siguiente ya tenga la respuesta...


Un saludo!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #8 (permalink)  
Antiguo 16/09/2014, 23:12
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Respuesta: Crear Dll en .net y utilizarla en vb6

Intenta registrarla con el comando REGSVR32, tambien intenta colocando la DLL dentro del directorio de tu ejecutable
  #9 (permalink)  
Antiguo 17/09/2014, 01:26
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Crear Dll en .net y utilizarla en vb6

Más bien parece que ha de usar regasm, supongo que porque no se trata de una DLL "normal" sino de una que necesita del runtime de .net
__________________
Aviso: No se resuelven dudas por MP!

Etiquetas: visual, visual+basic+6, visual.net
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:40.