• Viernes 8 de Noviembre de 2024, 18:49

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - tousan

Páginas: [1]
1
C/C++ / no encuentra la librería
« en: Viernes 31 de Julio de 2009, 15:38 »
he echo una simple prueba: he creado un ejemplo.exe con una hello.dll, el tipico para crear una dll.
Funciona perfectamente pero en Windows XP (SP2) si hago lo siguiente:
-Boton derecho mouse sobre el .exe --> ejecutar cómo

aparece la siguiente pantalla:
Código: Text
  1. img389.imageshack.us/img389/9256/ejco.png
  2.  
 
Y aora si dejo el checkbox activado (x-Proteger mi equipo y mis datos contra la actividad de programas sin autorizacion) me sale el siguiente mensaje:
Código: Text
  1. img54.imageshack.us/img54/7461/ejco2.png
  2.  

¿Por que me ocurre esto?
Si desactivo el checkbox funciona bien. si lo ejecuto funciona bien, pero si dejo el checkbox activado me sale ese error.

Pero en otros programas no pasa... ¿por que en el mio sí?

2
C/C++ / Re: Conseguir ruta completa
« en: Viernes 17 de Julio de 2009, 11:09 »
(Joer!)perdon...
 siempre me responds, te lo agradezco un montón.
Gracias, eso era.

3
C/C++ / Conseguir ruta completa
« en: Viernes 17 de Julio de 2009, 10:52 »
¿Cmo haceis para conseguir la ruta completa de vuestro programa?

El problema es que si llamo a GetCommandLine, me da la ruta + los argumentos. Yo solo kiero la ruta. Hay alguna forma rapida y sencilla?
gracias

4
C/C++ / Re: Llamar a una dll desde VC++
« en: Miércoles 8 de Julio de 2009, 19:33 »
Después de 3 días sin parar de probar cosas lo logré...

Lo comento:
Se necesitan dos archivos que se crean con la dll:
1º) Hola.lib -> librería estática absolutamente necesaria que utiliza el vinculador.

Este archivo "Hola.lib" hay que ponerlo en el mismo directorio(por no introducir más rutas) donde se encuentra el proyecto (recuerdo que yo utilizo VC++ 2005 express). Después hay que indicarselo al vinculador y esto se hace así: menú proyecto --> propiedades --> propiedades de configuración --> vinculador --> entrada y en la primera opción que pone: dependencias adicionales hay que poner ahí "Hola.lib"

2º)HolaDll.h -> archivo de encabezado
También se crea con la librería y ahí se indican las funciones exportadas que vamos a llamar.

Simplemente en nuestro proyecto hay que incluirlo:
#include "HolaDll.h"

Y con esto ya está, ya se puede llamar a la función Hola() y VC++ ya sabe que es a la función de la librería de "Hola.dll" y ya no es necesario usar loadlibrary ni Getprocaddress porque se inserta en la tabla de importaciones de nuestro programa.
Espero que sea útil...

PD. Yo lo que nunca he entendido por qué es necesaria la librería estática "Hola.lib", ya que sino existe no hay manera de hacerlo. No lo entiendo.
Digo esto porque yo por ej. puedo llamar a una API que no sea utilizada y después con mi programa compilado modificar la import table y poner la librería "Hola.dll" por ej. con el programa ImportReconstructor, y esto es muy fácil de hacer... entonces por qué narices VC++ necesita la librería estática "hola.lib"?????
¿No podría bastar con una llamada parecida a esto?: (Hola.dll)void Hola(void); o algo similar... No lo entiendo porque en el archivo de encabezado holadll.h ya están las funciones de la librería.... Gracias

5
C/C++ / Re: Llamar a una dll desde VC++
« en: Martes 7 de Julio de 2009, 21:35 »
Cuando creé la librería obtuve un hola.lib.

He puesto ese archivo en mi proyecto y en propiedades->vinculador->entrada->dependencias adicionales he añadido "hola.lib"

En el código he puesto lo siguiente:
....
#define Hola __declspec(dllimport)
...
//y llamo a la función así:
Hola();
....

Lo he compilado y no da ningún error pero he analizado el programa con un debugger y esa llamada Hola() no existe... y en la tabla de importaciones tampoco ha añadido a "Hola.dll"... No lo entiendo.
Gracias

6
C/C++ / Llamar a una dll desde VC++
« en: Martes 7 de Julio de 2009, 21:22 »
Hola.

No consigo llamar a una función de una librería desde VC++ 2005.
He creado una simple librería llamada "Hola.dll" y en ella exporto una función llamada "Hola()" que es simplemente un MessageBox.

Lo que yo quiero hacer es que en mi programa cargue la librería "Hola.dll" desde la tabla de importaciones... al igual que lo hace con cualquier librería de Windows.
Sé hacerlo con LoadLibrary y con GetProcAddress y funciona perfectamente pero no quiero hacerlo así.

He probado hacerlo de muchas formas diferentes y he leído muchos tutoriales pero no tengo ni idea de cómo hacerlo. Estoy intentando hacerlo del siguiente modo:
#define Hola __declspec(dllimport)
Pero no sé cómo decirle al compilador que Hola() es una función de Hola.dll

Alguien me puede orientar?? llevo dos días intentando hacerlo y de verdad que he rebuscado por todos sitios (buscando en google por ej. "__declspec(dllimport)"etc...) y no encuentro nada.
Gracias

7
C/C++ / Re: asm en C++(API y variables)
« en: Viernes 3 de Julio de 2009, 19:40 »
Gracias.
Es bastante diferente comparado con MASM32. Voy a intentar enlazar MASM32 con VC++ para que el código asm lo ensamble desde MASM32. estoy seguro que se tiene que poder. si lo consigo lo postearé. gracias

8
C/C++ / asm en C++(API y variables)
« en: Viernes 3 de Julio de 2009, 18:57 »
Hola.
CUando inserto código en ensamblador en C++:
Código: Text
  1. __asm
  2. {
  3. ...
  4. }
  5.  

Cómo puedo llamar desde asm a una API??
Código: Text
  1. __asm
  2. {
  3. MessageBox(eax, NULL, NULL, 1);
  4. ...
  5. }
  6.  

Y finalmente, ¿cómo se utilizan las variables? Con MASM32 por ej. es así: valor dd ? para definir un dword pero en C++??:
Código: Text
  1. __asm
  2. {
  3. valor dd ?
  4. ...
  5. }
  6.  

9
C/C++ / Re: Añadir archivo.cpp
« en: Sábado 2 de Mayo de 2009, 11:41 »
Muchas gracias por vuestra ayuda. Al final de probar y probar lo solucioné. Lo esplico para algún novato como yo. Por cierto, lo he provado tanto en Dev-C++ como en M. Visual C++

Código en "main.cpp":
Código: C++
  1. #include <windows.h>
  2. #include "resource.h"
  3.  
  4. int main()
  5. {
  6. subrutina_en_codigo_cpp();
  7. }
  8.  

Código en "resource.h":
Código: C++
  1. #ifndef RESOURCE_H
  2.     #include <windows.h>
  3.     void subrutina_en_codigo_cpp();
  4. #endif
  5.  

Código en "codigo.cpp":
Código: C++
  1. #include "resource.h"
  2.  
  3. void subrutina_en_codigo_cpp()
  4. {
  5.     MessageBox(NULL, TEXT("Estás en código.cpp"), TEXT("Correcto"), MB_OK | MB_ICONEXCLAMATION);                      
  6. }
  7.  

Funciona perfectamente.
Gracias por vuestra ayuda.

10
C/C++ / Añadir archivo.cpp
« en: Viernes 1 de Mayo de 2009, 21:38 »
En mi programa uso el "main.cpp" donde tengo todo el codigo.
Sin embargo quiero tener todo mas ordenado y e creado un nuevo archivo "codigo.cpp" en donde utilizo unas funciones.

Quiero usar esas funciones de "codigo.cpp" y llamarlas desde "main.cpp" pero no sé como acerlo. He puesto:
#include "codigo.cpp"
y reconoce el archivo .cpp pero me da error.

Por ej. en codigo.cpp eh puesto esta función:
Código: C++
  1. void funcion_en_codigo_cpp ()
  2. {
  3.     int a
  4.     //esto es un ejemplo
  5. }
  6.  

y desde main.cpp la llamo y al compilar me sale un error.

¿Cómo se ace?¿que hago mal?gracias

Páginas: [1]