Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





pragma linker

Iniciado por Drácula, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Drácula

                                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?
                               
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Drácula

                                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")
                               
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Astat

                                Pues te confirmo que eso funciona. Es lo que uso yo para linkar con D3D.

                               

Emotion

                                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
                               
G3: Get the Power!

Javier

                                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.

                               

fiero

                                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                                
www.videopanoramas.com Videopanoramas 3D player

Emotion

                                Gracias por la aclaracion :sonriendo:

Saludos
                               
G3: Get the Power!

Javier

                                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.                                

fiero

                                sip, ya veo, hay que tener cuidado con eso...

un saludo                                
www.videopanoramas.com Videopanoramas 3D player






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.