Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-09-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Utilizar DLL C# en c++ builder.

Hola buen día.


Estoy tratando de utilizar una Dll C# en un proyecto que está en c++ builder 6.

Eh estado investigando pero aun no no me ha quedado claro como utilizar una dll com hecha en C# dentro de c++ builder.

Cual es el mejor camino para cargar dll's hechas en C# dentro de c++ builder?

Gracias.

Saludos.
Responder Con Cita
  #2  
Antiguo 29-09-2014
edgargh edgargh is offline
Miembro
 
Registrado: jun 2006
Ubicación: León, Guanajuato
Posts: 25
Poder: 0
edgargh Va por buen camino
hola, creo que ya antes hicieron esa pregunta y la respondieron (usar dll hecha en c# en c++) si la buscas la encontraras tal cual. saludos
Responder Con Cita
  #3  
Antiguo 30-09-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Hola Egdar gracias por responder.

La verdad eh estado leyendo de echo eh visto ese post pero en realidad no dice nada concreto o alguna guía de ejemplo eh echo como dice
con interfaces y todo pero nada no carga la biblioteca y sus métodos.

Tu has utilizado dll .net en c++ Builder 6 ?

Gracias.

Saludos.
Responder Con Cita
  #4  
Antiguo 30-09-2014
edgargh edgargh is offline
Miembro
 
Registrado: jun 2006
Ubicación: León, Guanajuato
Posts: 25
Poder: 0
edgargh Va por buen camino
Que tal, no lo he hecho desde c++ builder, pero me toco hacerlo desde delphi. No se hasta que punto lo lleves avanzado, pero de entrada el ensamblado (dll) tal cual lo genera c# no es compatible para importarse en delphi (Builder en tu caso). Debes generarlo como ensamblado compatible o visible a través de COM.

Proyecto->Propiedades de (nombre del proyecto)

Aplicación->Información de ensamblado->Crear ensamblado visible a través de COM

Generar->Registrar para interoperatibilidad COM

En el archivo AssemblyInfo.cs de tu proyecto, asegura tener lo siguiente:

using System.Runtime.InteropServices;

[assembly: ComVisible(true)]

Compila tu proyecto y te generara la dll habilitada para la compatibilidad COM. Lo que sigue es el registro o importación de la dll desde tu lenguaje. No se si desde Builder ya puedas cargar directamente la dll con los cambios realizados a la dll en c#, desde delphi tuve que hacer otros pasos adicionales, seria cuestión que probaras.

No puedo insertar enlaces, pero busca "Crear una DLL (COM) en Visual Studio C# para que sea visible desde Power Builder (PB)", ahi explica mas o menos lo que te comento, espero te sirva. saludos
Responder Con Cita
  #5  
Antiguo 30-09-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Hola Edgar de nuevo gracias por tu respuesta.

Ya realice los pasos que me comentas de echo en otro lenguaje de programación ya pude utilizar los métodos de C#.

Específicamente estoy buscando la manera ahora de acceder desde c++ builder 6 importo en proyecto la librería según eh leído sería por medio de interfaces pero nada mas no no eh logrado que se carga exitosamente para poder utilizar los métodos.


Gracias.

Saludos.
Responder Con Cita
  #6  
Antiguo 30-09-2014
edgargh edgargh is offline
Miembro
 
Registrado: jun 2006
Ubicación: León, Guanajuato
Posts: 25
Poder: 0
edgargh Va por buen camino
Hola, busca ".Net interop - using C# assembly from Delphi Win32", viene una herramienta (InteropUtils.exe) y la manera de utilizarla (el único detalle es que esta en ingles). Esta enfocada a delphi, pero si te fijas trae una opción para generar el código también en c++.

básicamente, partes de tu dll (no recuerdo si también necesita estar junto con la dll el archivo tlb, checalo), y a partir de eso puedes generar el código que necesitas para acceder a los métodos. Saludos
Responder Con Cita
  #7  
Antiguo 30-09-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
¿Y no puedes usar LoadLibrary y GetProcAddress para usar las funciones de la dll dinamicamente?
Responder Con Cita
  #8  
Antiguo 01-10-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Hola Edgar gracias de nuevo por tu respuesta.
Ok voy a revisar y te comento.

Saludos.
Responder Con Cita
  #9  
Antiguo 01-10-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Hola agumi buen día.
Gracias por tu respuesta.

Eh intentado utilizar estos métodos para cargar las dll dinamicamente pero el detalle no eh logrado igual cargar la función con GetProcAddress solo eh logrado cargar la dll con el LoadLibrary.
LoadLibrary y GetProcAddress

Eh visto ejemplos y nada no me logra aun cargar no se si por que están echas en .net las dll.

Saludos.
Responder Con Cita
  #10  
Antiguo 01-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Mira una cosa, descargate el Dependency Walker y mira realmente el nombre de las funciones. Quizas el problema no es que sea .net, quizas es que por ejemplo, si su nombre es GetDir, al compilar la dll puede ser que se llame por ejemplo _GetDir con lo que si llamas a GetProcAddress con GetDir no lo encontrará. Dependency Walker te dirá los nombres reales de las funciones de la dll. Descargalo de aquí

Y aqui como cargar funciones dinamicamente: http://msdn.microsoft.com/en-us/library/ms810279.aspx

Última edición por aguml fecha: 01-10-2014 a las 16:35:02.
Responder Con Cita
  #11  
Antiguo 01-10-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Hola Agumi.

El detalle está en que en dependency walker .. no me muestra las funciones que se supone que tiene la dll.
Responder Con Cita
  #12  
Antiguo 01-10-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Nada Edga, nada Agumi .. creo que tendré que buscar otras alternativas.. ya que ya llevo un par de días con esto investigando.. probaré con web services. a ver que tal va.
Responder Con Cita
  #13  
Antiguo 01-10-2014
edgargh edgargh is offline
Miembro
 
Registrado: jun 2006
Ubicación: León, Guanajuato
Posts: 25
Poder: 0
edgargh Va por buen camino
Hola, solo por curiosidad, con la herramienta que te mencione, ¿no te generó los archivos cpp´s y h's necesarios para referenciar los métodos de la dll?, ¿no los pudiste usar?, ¿que error te marco?, ¿en donde te atoraste o que salió mal que no pudiste llegar a lo que buscas?. Como que eso de Nada, no me dice cual fue la razón por la que no lo pudiste hacer.
Responder Con Cita
  #14  
Antiguo 01-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Lo unico que se me ocurre es que tenga algun tipo de proteccion como ofuscacion o encriptacion. ¿las funciones que quieres usar de dicha dll son externas? porque si no lo son no podras usarlas. Podrias pasar la dll y que el que quiera ayudarte le pueda echar un vistazo.
Responder Con Cita
  #15  
Antiguo 01-10-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Hola Edgar
me dice que no encuentra el c++ builder Path.

y no genera nada. y ya le puse la ruta que me dice.
Responder Con Cita
  #16  
Antiguo 01-10-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Hola Agumi.
De echo yo estoy haciendo una dll de prueba igual .. que solo me retorne un mensaje. En otro lenguaje ya pude hacer que funcione pero especificamente en c++ builder 6 nada mas no.

Donde puedo subir la ddl de prueba. ?
Responder Con Cita
  #17  
Antiguo 02-10-2014
edgargh edgargh is offline
Miembro
 
Registrado: jun 2006
Ubicación: León, Guanajuato
Posts: 25
Poder: 0
edgargh Va por buen camino
Tome la dll en c# (Csharpassembly.dll) que viene de ejemplo en la carpeta "Net interop - C#/Assembly", dentro de los archivos que te dije que bajaras, copie la dll y la puse en una carpeta nueva
Ejecute InteropUtils.exe, seleccione la dll recien copiada
Seleccione la opción Generate c++ files
Presione el boton Export y me genero los cpp´s y h´s necesarios
finalmente presione el boton Register for COM.

Instale el c++ builder 6
Cree un proyecto nuevo y agregue el archivo Csharpassembly_tlb.cpp que me genero InteropUtils
Tome de base el proyecto delphi de prueba que viene en la carpeta "Net interop - C#\Test"
Tome una parte funcional del código y como pude lo converti a c++ builder
y que crees?, funciono.
Código PHP:
void __fastcall TForm1::btnTestObjectClick(TObject *Sender)

{
        
CoNetClass *NetObject;
        
NetObject = new CoNetClass;
        
TCOM_NetClass Tcom;

        
mmoOutput->Lines->Clear();

    
Tcom =  NetObject->Create();
    
mmoOutput->Lines->Add(Tcom->StringMethod());

donde StringMethod() esta dentro de las funciones de la dll de ejemplo.

Última edición por ecfisa fecha: 02-10-2014 a las 00:40:47. Razón: Etiquetas
Responder Con Cita
  #18  
Antiguo 02-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola edgargh.

Las etiquetas que podes usar en tus mensajes cuando agregues código C++ son: [php] tu_codigo [/php] ó [code] tu_codigo [/code].

También mediante los íconos:


habiendo seleccionado previamente el código. (Ya las agregué a tu mensaje)

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #19  
Antiguo 02-10-2014
edgargh edgargh is offline
Miembro
 
Registrado: jun 2006
Ubicación: León, Guanajuato
Posts: 25
Poder: 0
edgargh Va por buen camino
ok, gracias por el dato.
Responder Con Cita
  #20  
Antiguo 02-10-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Hola que tal buenas noches.

Ok .. algo debo estar haciendo mal.

Voy a probar mañana a primera hora y comento como me fue no puede ser que solo ami no me funcione.

Verificaré de nuevo muchas gracias por su ayuda tiene que quedar .

Gracias.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
utilizar el componente IdSNMP en c++ builder 2007 sarg C++ Builder 2 25-07-2017 16:50:26
¿Qué versión de C++ builder puedo utilizar para un SO de 64 bits? Laura_C C++ Builder 7 06-10-2012 11:59:09
Utilizar Formularios Delphi en C++ Builder pmarin C++ Builder 1 04-06-2007 16:03:32
Utilizar DLL de .NET con C++ Builder edemov C++ Builder 0 18-04-2007 21:09:02
Como utilizar el asistente de grabacion de CD desde Builder? JuanErasmo C++ Builder 2 12-01-2006 23:11:37


La franja horaria es GMT +2. Ahora son las 05:22:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi