Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Error Al Linkar Con Ptk Y Visual C++

Iniciado por javizarim, 21 de Marzo de 2006, 12:39:09 AM

« anterior - próximo »

javizarim

 Hola
Como ya he dicho en el título me sale un error al intentar linkar un programa con las librerías ptk. Estoy usando el visual C++ Express.
Creo que he configurado bien todo pero voy a poner aquí los pasos que he seguido por si he hecho algo mal ya que es la primera vez que utilizo visual.
1. Instale el visual express.
2. Instale el sdk de windows y el sdk de directx.
3. Descomprimi las librerias ptk en un directorio.
4. Añadí los archivos de cabecera del sdk de windows y de directx en el visual de esta forma:
  - Menu tools y options
  - Escogí la opcion "Projects and Solutions", "VC++ Directories" y ya por ultimo en el combo "include files" y añadi el directorio en el que estaban instalados el sdk y las directx
5. Añadí las librerías de la misma forma que los archivos de cabecera pero en vez de coger "include files" escogí la opción "library files"
6. Creo un proyecto vacío
7. Añado los archivos de cabecera de las librerias ptk al proyecto de esta forma:
  - Propiedades del proyecto - Configuration properties - C/C++ y en la opción "Additional Include Directories" añado el directorio de los ficheros de cabecera de la librería ptk
8. Añado las librerías
  - Propiedades del proyecto - Configuration properties - Linker y en la opción "Additional Library Directories" añado el directorio de las librerias.
9. Creo un fichero nuevo .cpp y pongo este codigo


#include <ptk.h>

int WINAPI WinMain(IN HINSTANCE hInstance,
    IN HINSTANCE hPrevInstance,
    IN LPSTR lpCmdLine,
    IN int nShowCmd )
{
KWindow *myWindow = NULL;
myWindow = KPTK::createKWindow( K_OPENGL  );
myWindow->createGameWindow( 640,480,16,true,"my game" );
   return 0;
}


10. Le doy a compilar y no me da ningun fallo pero cuando se pone a linkar dice esto:

------ Build started: Project: Project1, Configuration: Debug Win32 ------
Compiling...
main.cpp
Linking...
main.obj : error LNK2019: unresolved external symbol "public: static class KWindow * __cdecl KPTK::createKWindow(enum Erenderer,bool)" (?createKWindow@KPTK@@SAPAVKWindow@@W4Erenderer@@_N@Z) referenced in function _WinMain@16
F:\Documents and Settings\Javi\Mis documentos\Visual Studio 2005\Projects\Project1\Debug\Project1.exe : fatal error LNK1120: 1 unresolved externals
Build log was saved at "file://f:\Documents and Settings\Javi\Mis documentos\Visual Studio 2005\Projects\Project1\Project1\Debug\BuildLog.htm"
Project1 - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========



Si alguien me puede ayudar y decirme que he hecho mal se lo agradeceria enormente porque llevo 2 días con lo mismo y me estoy volviendo loco  (nooo)

Un saludo
Javi

Warchief

 Parece que falta indicar la librería en concreto que quieres usar, ¿no?

En Linker > Input, debería haber un "Additional Dependencies" o algo así. Ahí tendras que poner el nombre de la librería (pej: PTK.lib)

En VS también se puede añadir con la directiva:

#pragma comment(lib, "PTK.lib")

javizarim

 Se me había olvidado añadir eso pero aun asi no me linka. Ahora me da este fallo

------ Build started: Project: Project1, Configuration: Debug Win32 ------
Linking...
libptkvc.lib(KWindowGL.obj) : error LNK2019: unresolved external symbol __imp__glEnd@0 referenced in function "void __cdecl DrawLineMacro(float,float,float,float,float,float,float,float,float)" (?DrawLineMacro@@YAXMMMMMMMMM@Z)
libptkvc.lib(KGraphicGL.obj) : error LNK2001: unresolved external symbol __imp__glEnd@0
libptkvc.lib(K3D.obj) : error LNK2001: unresolved external symbol __imp__glEnd@0
....
.....


También he puesto que ignore la librería libc.lib ya que lo leí por alguna pagina (ahora no me acuerdo cual).

Warchief

 ¿Parece que también hace falta la librería de opengl?

_Grey

 No he usado esta librería, pero puedes probar a cambiar el :

myWindow = KPTK::createKWindow( K_OPENGL  );

por un ...

myWindow = KPTK::createKWindow( K_DIRECTX  );

Viendo que instalaste el SDK de directX....

De todas formas, en la documentación de la librería debería de venir a que librerías has de linkar en el proyecto, repasatela, que el fallo es ese es evidente.

Saludos, ya nos contaras.

javizarim

 Ya esta solucionado, lo que me pasa es que no se leer bien. En el readme de la libreria ponía todas las librerias con las que tenía que enlazar y yo pasaba de algunas de ellas como por ejemplo la de opengl. También se tenía  que poner que pasará de las librerías libc y libcmt y por último en una opción de la generación de código se tenía que poner "Multi-threaded Debug (/MTd)" (esta opción no se muy bien que significa).
Muchas Gracias a todos.

Javi






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.