| ||||
Ya se puede Crear Windows DLL con VB Quiero trasmitirles a todos que ya se pueden crear Windows DLL( DLL DINAMICAS) CON VB para más información ir a la FAQ' pag 5
__________________ "No hay lenguaje de programación potente que sea inferior a otro semejante cuando existe un buen programador que lo defiende" Yosvanis Cruz Alias VisualGuallabo Ycruz |
| |||
Como dice Beakdan, es fútil hacer DLLs (aunque se pueda haciendo vudú) con VB. Las DLLs se suelen hacer para modularizar partes de aplicaciones _muy grandes_ y no tener que recompilarlo cada vez, para fabricar plug-ins, para tener la potencia de ASM/C/C++ en otros lenguajes (como VB)... pero hacerlas en VB no le encuentro el sentido. Por otra parte, siguen sin ser "puras" DLLs, porque dependes del RunTime. Es decir, no son ejecutables por un Windows "a palo seco", mientras que las de C/C++ sí, porque no usan ningún runtime. Tampoco serían ejecutables desde un emulador como Wine para Linux o para Mac. |
| ||||
Grasias por la Información Cita: eso lo se pero para los programadores de Visual Basic si son de Utilidad. ya que como quiera tienen que usar el RunTime de VB. Pero lo que no mencionas, es que, salvo por el desafío que implicaba hacerlo, no tiene mucha utilidad considerando que siempre tendrás la dependencia con el RunTime de VB.
__________________ "No hay lenguaje de programación potente que sea inferior a otro semejante cuando existe un buen programador que lo defiende" Yosvanis Cruz Alias VisualGuallabo Ycruz |
| |||
Cita: Bien, pero el problema reside en que en tu post en las FAQ's dices que "podrían ser usadas por otros lenguajes". No, sólo por aquél ordenador que tenga la RunTime, lo que implica que ningún otro lenguaje podrá usarlo "de por sí" al menos que instales el "pack VB".
Iniciado por VisualGuallabo Grasias por la Información eso lo se pero para los programadores de Visual Basic si son de Utilidad. ya que como quiera tienen que usar el RunTime de VB. |
| ||||
Cita: Mis disculpas por la mala comunicación, claro ase falta el Run Time de Vb. Bien, pero el problema reside en que en tu post en las FAQ's dices que "podrían ser usadas por otros lenguajes". No, sólo por aquél ordenador que tenga la RunTime, lo que implica que ningún otro lenguaje podrá usarlo "de por sí" al menos que instales el "pack VB". El Guille en su Web es el que tiene ejemplos con otros lenguajes yo no los he probado pero seguro que deben funcionar cuando el los puso. Pero creo que se puedan crear este tipo de dll en Vb es un adelanto o me equivoco.
__________________ "No hay lenguaje de programación potente que sea inferior a otro semejante cuando existe un buen programador que lo defiende" Yosvanis Cruz Alias VisualGuallabo Ycruz |
| ||||
Cita: jajaj claro hacer un instalador para una DLL
Iniciado por VisualGuallabo Pero creo que se puedan crear este tipo de dll en Vb es un adelanto o me equivoco. ![]() ![]() jajaja que incluya el Runtime de VB6 jaja nos vemos..
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ Sitio http://www.geoavila.com twitter: @GeoAvila Última edición por GeoAvila; 13/02/2006 a las 14:24 |
| ||||
Como quiera debes distribuir la Runtime si la aplicación esta hecha en Vb.
__________________ "No hay lenguaje de programación potente que sea inferior a otro semejante cuando existe un buen programador que lo defiende" Yosvanis Cruz Alias VisualGuallabo Ycruz |
| |||
Cita: Vale ;)
Iniciado por VisualGuallabo Mis disculpas por la mala comunicación, claro ase falta el Run Time de Vb. El Guille en su Web es el que tiene ejemplos con otros lenguajes yo no los he probado pero seguro que deben funcionar cuando el los puso. Pero creo que se puedan crear este tipo de dll en Vb es un adelanto o me equivoco. Ya te han dicho que todo es posible. El problema es, ¿es útil? No encuentro utilidad a dividir un proyecto VB en varias DLLs... Y en extrañísimo caso de que programases un proyecto tan grande como para tener que dividirlo (cosa que dudo en VB), sería conveniente hacer las DLL en C/C++ o cualquier otro lenguaje que deje crearlas "de por sí". Otro caso similar es el código que se auto-modifica él sólo en tiempo de ejecución. ¿Merece la complicación el poco rendimiento que pueda ofrecer? ¿Es útil? Como curiosidad vale, pero nada más. |
| |||
Cita: Las DLLs "reales" no se instalan...
Iniciado por GeoAvila claro hacer un instalador para una DLL ![]() ![]() jajaja que incluya el Runtime de VB6 jaja nos vemos.. ![]() Simplemente se leen. Entiendo que no lo supieses, es típico que todo lo del VB haya que "registrarlo" y bobadas similares con los OCXs. |
| ||||
Cita: totalmente de acuerdo, no tenes que inventar el agua azucarada si ya existe, a menos que te vaya ser de mucha ayuda pero de lo contrario, mejor sería usar lo adecuado para ello si ya esta dado, en este caso te puse de broma un instalador para una DLL imaginate eso.. se puede pero en realidad vale la pena mejor hacelo todo en tu proyecto al fin cuando te lleves tu proyecto y lo instales en otra computadora el instalará el Runtime entonces cual es el sentido de quere hacer la DLL sin el runtime si de todas formas lo vas a necesitar el runtime para correr tu app de VB6
Iniciado por MaxExtreme Vale ;) Ya te han dicho que todo es posible. El problema es, ¿es útil? No encuentro utilidad a dividir un proyecto VB en varias DLLs... Y en extrañísimo caso de que programases un proyecto tan grande como para tener que dividirlo (cosa que dudo en VB), sería conveniente hacer las DLL en C/C++ o cualquier otro lenguaje que deje crearlas "de por sí". Otro caso similar es el código que se auto-modifica él sólo en tiempo de ejecución. ¿Merece la complicación el poco rendimiento que pueda ofrecer? ¿Es útil? Como curiosidad vale, pero nada más. ![]() nos vemos..
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ Sitio http://www.geoavila.com twitter: @GeoAvila |
| ||||
Cita: YO sé que las DLL no se instalan y lo sé perfectamente, pero si hace una en VB tendrías que hacer un instalador que lleve el Runtime, para que te pueda correr lo que dije del instaladorr en en tono de burla porque así se debería de hacer... cosa que sería ridículo porque solo te funcionaría en computadoras que tienen instalado El Runtime de VB
Iniciado por MaxExtreme Las DLLs "reales" no se instalan... ![]() Simplemente se leen. Entiendo que no lo supieses, es típico que todo lo del VB haya que "registrarlo" y bobadas similares con los OCXs. nos vemos...
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ Sitio http://www.geoavila.com twitter: @GeoAvila |
| |||
Cita: Completamente de acuerdo, mi comentario fue un apunte bromista, no con mala intención
Iniciado por GeoAvila YO sé que las DLL no se instalan y lo sé perfectamente, pero si hace una en VB tendrías que hacer un instalador que lleve el Runtime, para que te pueda correr lo que dije del instaladorr en en tono de burla porque así se debería de hacer... cosa que sería ridículo porque solo te funcionaría en computadoras que tienen instalado El Runtime de VB nos vemos... ![]() |
| ||||
Cita: jajaj ok ...
Iniciado por MaxExtreme Completamente de acuerdo, mi comentario fue un apunte bromista, no con mala intención ![]() ![]()
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ Sitio http://www.geoavila.com twitter: @GeoAvila |
| |||
Acabo de leer el artículo más por encima, y contemplándolo bien, lo que hace no es nada "extraño". Usa el compilador y demás utilidades tal y como se suelen usar (línea de comandos), desde la cual permite crear a partir de módulos .bas DLLs, al igual que se hace con un fuente de C .c o C++ .cpp. Es decir, no hay nada que no se lleve haciendo años con otros lenguajes, salvo "engañar" para que admita los archivos objeto que deja el compilador de VB en vez de los de C/C++. |
| ||||
Cita: Lo que tienes que aser es crear un proyecto DLL ActiveX.
Iniciado por LeandroA felizitaciones por el aporte VisualGuallabo, Como haces para compilar? eL MODULO DE CLASE LOS DEJAS COMO ESTA. Y EN UN MODULO publicas las funciones que quieres que tengan las dll. el ejemplo de Ron en el modulo. Cita: luego carga el proyecto con mi programa.
Iniciado por Codigo Option Explicit Public Function Increment(var As Integer) As Integer If Not IsNumeric(var) Then Err.Raise 5 Increment = var + 1 End Function Public Function Decrement(var As Integer) As Integer If Not IsNumeric(var) Then Err.Raise 5 Decrement = var - 1 End Function Public Function Square(var As Long) As Long If Not IsNumeric(var) Then Err.Raise 5 Square = var ^ 2 End Function marca el modulo y luego las funciones oprocedimientos que quieres exportar. Recuerda buscar la ruta donde se encuentra el exe de Vb en caso de Vb6(Vb6.exe) y luego manda a compilar la dll te la creara en el directorio del proyecto. luego la llamas con Declare como a las api de windows. Te recomiendo que leas los articulos que menciono en la faq'
__________________ "No hay lenguaje de programación potente que sea inferior a otro semejante cuando existe un buen programador que lo defiende" Yosvanis Cruz Alias VisualGuallabo Ycruz Última edición por VisualGuallabo; 13/02/2006 a las 14:47 |
| |||
Hola te queria hacer una pregunta referente a crear una funcion con la dll para guardar un dato en un txt por ejemplo en la dll creo esta funcion Clave: Public Function imprimir(ByVal dato As String) Open "C:\prueva.txt" For Output As #1 Print #1, dato Close #1 End Function y en mi proyecto la llamo de esta forma: Clave: Private Declare Function imprimir Lib "Prueba.dll" (ByVal dato As String) Private Sub Command1_Click() imprimir "hola mundo" End Sub pero en prueva.txt me guarda ????????? como puedo hacer para combertirlo en string Saludos |
| |||
Hola lo solucione de esta forma nose si sera la correcta pero creo que anda bien En la dll: Cita: y en mi proyectoOption Explicit Public Function Saludo() As String Saludo = "Hola desde la DLL Prueba" End Function Public Function imprimir(ByVal dato As String) Open "C:\Favoritos.txt" For Output As #1 Print #1, StrConv(dato, vbUnicode) Close #1 End Function Cita: Option Explicit Private Declare Function Saludo Lib "Prueba.dll" () As String Private Declare Function imprimir Lib "Prueba.dll" (ByVal dato As String) Private Sub cmdSaludo_Click() MsgBox StrConv(Saludo, vbFromUnicode) End Sub Private Sub Command1_Click() imprimir "hola mundo" End Sub |
| ||||
Mira de esta forma te ahoras codigo. en la dll creo esta funcion Clave: Public Function imprimir(ByVal dato As Variant) Open "C:\prueva.txt" For Output As #1 Print #1, dato Close #1 End Function En tu proyecto. Private Declare Function imprimir Lib "Prueba.dll" (ByVal dato As Variant) Private Sub Command1_Click() imprimir "hola mundo" End Sub
__________________ "No hay lenguaje de programación potente que sea inferior a otro semejante cuando existe un buen programador que lo defiende" Yosvanis Cruz Alias VisualGuallabo Ycruz |
| ||||
Leandro ya sabes trabajar con mi programa.?
__________________ "No hay lenguaje de programación potente que sea inferior a otro semejante cuando existe un buen programador que lo defiende" Yosvanis Cruz Alias VisualGuallabo Ycruz |
| |||
De manera general, usar el tipo Variant es malo. ¿Por qué? Fácil. ¿Qué es Variant? ¿Es un tipo? No, es una mezcla que junta todos los tipos normales. Pero el problema de esto es que nunca sabes que hay dentro de un Variant... ¿Es un número entero? ¿Es texto? ¿Son datos? ¿Es una imagen? ¿Es un número decimal? Con Variant no puedes establecer qué quieres y cómo quieres. Quizás tus operaciones sean con enteros y no con decimales... Quizás un 3 quieras que sea texto y no el caracter ASCII 3. ¿Qué diferencia hay entre "3", "3" y "3"? Uno es un número, otro una cadena, otro un flotante. ¿Cómo sabe Visual Basic que necesitas hacer con él? ¿O como lo saben otras funciones? Por otro lado, el uso de Variant impide sobrecargar funciones (VB no tiene esta característica) y limita mucho la POO. En teoría, además, el tipo Variant es más lento y ocupa más espacio que cualquier otro porque trata de "almacenar" todo a la vez... A pesar de todos los problemas, usarlo entre DLLs es aún peor. Una DLL de C++ nunca podrá recibir un tipo Variant, ni de cualquier otro lenguaje, porque es como un objeto, no un dato concreto. Si quieres mandar/recibir un número, ¿por qué no pones As Integer? Todos los lenguajes lo entenderán. |
| ||||
Gracias Max por tu gran explicación. Por casualidad no sabes como crear los archivo *.obj de Vb desde codigo.
__________________ "No hay lenguaje de programación potente que sea inferior a otro semejante cuando existe un buen programador que lo defiende" Yosvanis Cruz Alias VisualGuallabo Ycruz |
| |||
De nada, espero haberte convencido. No soy aficionado a VB ni lo he usado desde hace mucho tiempo, lo que sí te diré es que deberías usar el compilador normal, es decir, como explica el autor del artículo que has puesto aquí, debes ir a una consola y allí llamar al compilador de VB. Se llaman C2.exe y LINK.exe según el artículo: Cita: A partir de ahí (en la página 2), te explica cómo usarles. Along with VB6.EXE, the Visual Basic executable that defines the Visual Basic environment, we can also find C2.EXE and LINK.EXE, which are a compiler and a linker, respectively. Their presence in this directory suggests that VB6.EXE itself does not handle the generation of a DLL file, but that at some point in the compilation process, it calls these programs. |
| ||||
Si claro eso ya me lo habia leido pero me refiero como crear los *.Obj de Vb con el c2.exe que es el que los ase pero desde otra aplicación sea cual sea el lenguaje c++ c vc++ Delphi o Vb. es decir aserlos usando el c2.exe pero desde un programa hecho por mi. o si sabes de algun programa de consola que sea capas de crear dichos Objetos al pasarle como parametros los formularios, las clases y modulos.
__________________ "No hay lenguaje de programación potente que sea inferior a otro semejante cuando existe un buen programador que lo defiende" Yosvanis Cruz Alias VisualGuallabo Ycruz |
| |||
Cita: No entiendo, el c2.exe y el link.exe es precisamente lo que deberían hacer...
Iniciado por VisualGuallabo Si claro eso ya me lo habia leido pero me refiero como crear los *.Obj de Vb con el c2.exe que es el que los ase pero desde otra aplicación sea cual sea el lenguaje c++ c vc++ Delphi o Vb. es decir aserlos usando el c2.exe pero desde un programa hecho por mi. o si sabes de algun programa de consola que sea capas de crear dichos Objetos al pasarle como parametros los formularios, las clases y modulos. ¿A qué te reiferes como desde otra aplicación de C/C++, Delphi, VB...? |
| ||||
el c2.exe -Crea los Objetos el link.exe los enlaza y crea el exe o dll o ocx. Quiero aser un programa que con la ayuda del c2.exe me cree los *.Obj de un proyecto de Vb
__________________ "No hay lenguaje de programación potente que sea inferior a otro semejante cuando existe un buen programador que lo defiende" Yosvanis Cruz Alias VisualGuallabo Ycruz |