Recuerdo que leí hace un tiempo que se podía incluir un
#pragma comment(linker,???)
para que en un archivo.cpp se informara al linkador de qué librerías tenía que incluir.
Pero lo he probado y no me funciona.
¿Sabeis algo de esto?
Vaya, he encontrado algo en Google!! No lo he probado, pero lo pongo aquí por si a alguien le interesa.
#pragma comment (lib, "mylib.lib")
Pues te confirmo que eso funciona. Es lo que uso yo para linkar con D3D.
es como muy bien dijo astat, es con la directiva #pragma comment
de todas formas, y ya que estamos con las directivas, en este caso, mas que una directiva, mi duda es la siguiente:
cual es la diferencia entre _cdecl y _declspec? uso _declspec para, por ejemplo, alinear las variables en la memoria y que asi vayan mucho mejor a la cache del micro, pero he visto en muchos codigos lo del _cdecl y no tengo ni idea de para que es...
me podeis ayudar?
Gracias
El _cdecl se usa para establecer la convención de llamada estándar de C y C++, esto incluye el orden en el que se pasan los parámetros en las funciones y la forma en que se extraen, la gestión de la pila, etc.
Entre otras cosas se usa para distinguirlo del _stdcall, que emplea una convención de llamada diferente. Por ejemplo cuando por defecto un compilador trata todas las funciones como _stdcall, pues puedes usar _cdecl para decirle que tus funciones van a seguir esa convención.
Espero haberme explicado bien...
El _declspec se emplea para declarar "atributos extendidos" específicos de Microsoft, como puede ser dllexport para exportar funciones en una DLL, naked para definir una función "a pelo" que no incluya gestión de pila, etc.
Hola
no sabia lo de "naked", lo acabo de probar y mola como queda el código (por no poner no pone ni el ret :sonriendo: ), la función en la que lo he probado no tiene parametros, lo que pasa es que solo me funciona en modo debug, si lo compilo en release se me cuelga, ¿sabeis por que puede ser? ¿las llamadas a funciones se compilan igual no?
un saludo
Gracias por la aclaracion :sonriendo:
Saludos
Fiero, si has hecho una función naked, ten en cuenta que tienes que hacer tú mismo toda la gestión de pila, volver de la función, etc. Por ejemplo:
push ebp
pushad
.
.
.
popad
pop ebp
ret
Si no restauras correctamente los registros, te puede pasar cualquier cosa.
sip, ya veo, hay que tener cuidado con eso...
un saludo