Seite 2 von 3

Re: Suche freeglut 3.0.0 als statische *.LIB

Verfasst: 16.04.2018 18:12
von ccode_new
Hallöchen edel,

du hast wahrscheinlich doch recht.

Ich habe noch zu wenig Erfahrung mit statischen Lib's und bin auch noch zu dämlich um die ein oder andere Lib statisch zu linken.

Re: Suche freeglut 3.0.0 als statische *.LIB

Verfasst: 17.04.2018 20:48
von Mijikai
Ich suche immer noch nach einer Lösung.
Leider habe ich keine Ahnung wie man den Source zu einer statischen lib kompiliert. :(
Kennt sich jemand mit (msvc) C++ aus ?

Re: Suche freeglut 3.0.0 als statische *.LIB

Verfasst: 17.04.2018 21:02
von ccode_new
Du benötigst cmake.

Direkt für msvc habe ich jetzt spotan das hier:

https://docs.microsoft.com/de-de/cpp/id ... visual-cpp

cmake generiert ein makefile.

und dann habe ich noch etwas:

https://cognitivewaves.wordpress.com/makefiles/

https://cmake.org/download/

Das ist "super easy"!

Da gibt es sogar ein GUI-Programm dazu.

Das erstellt dir quasi das gesamte benötigte Visual C (msvc) - Projekt.

Re: Suche freeglut 3.0.0 als statische *.LIB

Verfasst: 18.04.2018 17:12
von Mijikai
ccode_new danke für die Links :)
Ich werds veruchen.

Re: Suche freeglut 3.0.0 als statische *.LIB

Verfasst: 18.04.2018 21:23
von ccode_new
Hallo!

Und schon Erfolg gehabt ?

Ich habe es jetzt auch noch mal unter Windows mit Visual C probiert.

Wie kommt man hier weiter ?

Was muss man alles bei Visual Studio einstellen ?

Bilder:
Bild

Bild

Re: Suche freeglut 3.0.0 als statische *.LIB

Verfasst: 19.04.2018 00:20
von Mijikai
ccode_new hat geschrieben:Hallo!

Und schon Erfolg gehabt ?

Ich habe es jetzt auch noch mal unter Windows mit Visual C probiert.
...
Leider noch nicht - versteh nur Bahnhof :freak:

Testcode genau so müsste es auch mit der statischen lib aussehen/gehen:

Code: Alles auswählen

#GLUT_KEY_NUM_LOCK = $006D
#GLUT_KEY_BEGIN = $006E
#GLUT_KEY_DELETE = $006F
#GLUT_KEY_SHIFT_L = $0070
#GLUT_KEY_SHIFT_R = $0071
#GLUT_KEY_CTRL_L = $0072
#GLUT_KEY_CTRL_R = $0073
#GLUT_KEY_ALT_L = $0074
#GLUT_KEY_ALT_R = $0075
#GLUT_ACTION_EXIT = 0
#GLUT_ACTION_GLUTMAINLOOP_RETURNS = 1
#GLUT_ACTION_CONTINUE_EXECUTION = 2
#GLUT_CREATE_NEW_CONTEXT = 0
#GLUT_USE_CURRENT_CONTEXT = 1
#GLUT_FORCE_INDIRECT_CONTEXT = 0
#GLUT_ALLOW_DIRECT_CONTEXT = 1
#GLUT_TRY_DIRECT_CONTEXT = 2
#GLUT_FORCE_DIRECT_CONTEXT = 3
#GLUT_INIT_STATE = $007C
#GLUT_ACTION_ON_WINDOW_CLOSE = $01F9
#GLUT_WINDOW_BORDER_WIDTH = $01FA
#GLUT_WINDOW_BORDER_HEIGHT = $01FB
#GLUT_WINDOW_HEADER_HEIGHT = $01FB
#GLUT_VERSION = $01FC
#GLUT_RENDERING_CONTEXT = $01FD
#GLUT_DIRECT_RENDERING = $01FE
#GLUT_FULL_SCREEN = $01FF
#GLUT_SKIP_STALE_MOTION_EVENTS = $0204
#GLUT_AUX = $1000
#GLUT_AUX1 = $1000
#GLUT_AUX2 = $2000
#GLUT_AUX3 = $4000
#GLUT_AUX4 = $8000
#GLUT_INIT_MAJOR_VERSION = $0200
#GLUT_INIT_MINOR_VERSION = $0201
#GLUT_INIT_FLAGS = $0202
#GLUT_INIT_PROFILE = $0203
#GLUT_DEBUG = $0001
#GLUT_FORWARD_COMPATIBLE = $0002
#GLUT_CORE_PROFILE = $0001
#GLUT_COMPATIBILITY_PROFILE = $0002
#GLUT_HAS_MULTI = 1
#GLUT_CAPTIONLESS = $0400
#GLUT_BORDERLESS = $0800
#GLUT_SRGB = $1000
#FREEGLUT_LIB_PRAGMAS = 1
#WIN32_LEAN_AND_MEAN = 1
#FREEGLUT = 1
#GLUT_API_VERSION = 4
#GLUT_XLIB_IMPLEMENTATION = 13
#FREEGLUT_VERSION_2_0 = 1
#GLUT_KEY_F1 = $0001
#GLUT_KEY_F2 = $0002
#GLUT_KEY_F3 = $0003
#GLUT_KEY_F4 = $0004
#GLUT_KEY_F5 = $0005
#GLUT_KEY_F6 = $0006
#GLUT_KEY_F7 = $0007
#GLUT_KEY_F8 = $0008
#GLUT_KEY_F9 = $0009
#GLUT_KEY_F10 = $000A
#GLUT_KEY_F11 = $000B
#GLUT_KEY_F12 = $000C
#GLUT_KEY_LEFT = $0064
#GLUT_KEY_UP = $0065
#GLUT_KEY_RIGHT = $0066
#GLUT_KEY_DOWN = $0067
#GLUT_KEY_PAGE_UP = $0068
#GLUT_KEY_PAGE_DOWN = $0069
#GLUT_KEY_HOME = $006A
#GLUT_KEY_END = $006B
#GLUT_KEY_INSERT = $006C
#GLUT_LEFT_BUTTON = $0000
#GLUT_MIDDLE_BUTTON = $0001
#GLUT_RIGHT_BUTTON = $0002
#GLUT_DOWN = $0000
#GLUT_UP = $0001
#GLUT_LEFT = $0000
#GLUT_ENTERED = $0001
#GLUT_RGB = $0000
#GLUT_RGBA = $0000
#GLUT_INDEX = $0001
#GLUT_SINGLE = $0000
#GLUT_DOUBLE = $0002
#GLUT_ACCUM = $0004
#GLUT_ALPHA = $0008
#GLUT_DEPTH = $0010
#GLUT_STENCIL = $0020
#GLUT_MULTISAMPLE = $0080
#GLUT_STEREO = $0100
#GLUT_LUMINANCE = $0200
#GLUT_MENU_NOT_IN_USE = $0000
#GLUT_MENU_IN_USE = $0001
#GLUT_NOT_VISIBLE = $0000
#GLUT_VISIBLE = $0001
#GLUT_HIDDEN = $0000
#GLUT_FULLY_RETAINED = $0001
#GLUT_PARTIALLY_RETAINED = $0002
#GLUT_FULLY_COVERED = $0003
#GLUT_WINDOW_X = $0064
#GLUT_WINDOW_Y = $0065
#GLUT_WINDOW_WIDTH = $0066
#GLUT_WINDOW_HEIGHT = $0067
#GLUT_WINDOW_BUFFER_SIZE = $0068
#GLUT_WINDOW_STENCIL_SIZE = $0069
#GLUT_WINDOW_DEPTH_SIZE = $006A
#GLUT_WINDOW_RED_SIZE = $006B
#GLUT_WINDOW_GREEN_SIZE = $006C
#GLUT_WINDOW_BLUE_SIZE = $006D
#GLUT_WINDOW_ALPHA_SIZE = $006E
#GLUT_WINDOW_ACCUM_RED_SIZE = $006F
#GLUT_WINDOW_ACCUM_GREEN_SIZE = $0070
#GLUT_WINDOW_ACCUM_BLUE_SIZE = $0071
#GLUT_WINDOW_ACCUM_ALPHA_SIZE = $0072
#GLUT_WINDOW_DOUBLEBUFFER = $0073
#GLUT_WINDOW_RGBA = $0074
#GLUT_WINDOW_PARENT = $0075
#GLUT_WINDOW_NUM_CHILDREN = $0076
#GLUT_WINDOW_COLORMAP_SIZE = $0077
#GLUT_WINDOW_NUM_SAMPLES = $0078
#GLUT_WINDOW_STEREO = $0079
#GLUT_WINDOW_CURSOR = $007A
#GLUT_SCREEN_WIDTH = $00C8
#GLUT_SCREEN_HEIGHT = $00C9
#GLUT_SCREEN_WIDTH_MM = $00CA
#GLUT_SCREEN_HEIGHT_MM = $00CB
#GLUT_MENU_NUM_ITEMS = $012C
#GLUT_DISPLAY_MODE_POSSIBLE = $0190
#GLUT_INIT_WINDOW_X = $01F4
#GLUT_INIT_WINDOW_Y = $01F5
#GLUT_INIT_WINDOW_WIDTH = $01F6
#GLUT_INIT_WINDOW_HEIGHT = $01F7
#GLUT_INIT_DISPLAY_MODE = $01F8
#GLUT_ELAPSED_TIME = $02BC
#GLUT_WINDOW_FORMAT_ID = $007B
#GLUT_HAS_KEYBOARD = $0258
#GLUT_HAS_MOUSE = $0259
#GLUT_HAS_SPACEBALL = $025A
#GLUT_HAS_DIAL_AND_BUTTON_BOX = $025B
#GLUT_HAS_TABLET = $025C
#GLUT_NUM_MOUSE_BUTTONS = $025D
#GLUT_NUM_SPACEBALL_BUTTONS = $025E
#GLUT_NUM_BUTTON_BOX_BUTTONS = $025F
#GLUT_NUM_DIALS = $0260
#GLUT_NUM_TABLET_BUTTONS = $0261
#GLUT_DEVICE_IGNORE_KEY_REPEAT = $0262
#GLUT_DEVICE_KEY_REPEAT = $0263
#GLUT_HAS_JOYSTICK = $0264
#GLUT_OWNS_JOYSTICK = $0265
#GLUT_JOYSTICK_BUTTONS = $0266
#GLUT_JOYSTICK_AXES = $0267
#GLUT_JOYSTICK_POLL_RATE = $0268
#GLUT_OVERLAY_POSSIBLE = $0320
#GLUT_LAYER_IN_USE = $0321
#GLUT_HAS_OVERLAY = $0322
#GLUT_TRANSPARENT_INDEX = $0323
#GLUT_NORMAL_DAMAGED = $0324
#GLUT_OVERLAY_DAMAGED = $0325
#GLUT_VIDEO_RESIZE_POSSIBLE = $0384
#GLUT_VIDEO_RESIZE_IN_USE = $0385
#GLUT_VIDEO_RESIZE_X_DELTA = $0386
#GLUT_VIDEO_RESIZE_Y_DELTA = $0387
#GLUT_VIDEO_RESIZE_WIDTH_DELTA = $0388
#GLUT_VIDEO_RESIZE_HEIGHT_DELTA = $0389
#GLUT_VIDEO_RESIZE_X = $038A
#GLUT_VIDEO_RESIZE_Y = $038B
#GLUT_VIDEO_RESIZE_WIDTH = $038C
#GLUT_VIDEO_RESIZE_HEIGHT = $038D
#GLUT_NORMAL = $0000
#GLUT_OVERLAY = $0001
#GLUT_ACTIVE_SHIFT = $0001
#GLUT_ACTIVE_CTRL = $0002
#GLUT_ACTIVE_ALT = $0004
#GLUT_CURSOR_RIGHT_ARROW = $0000
#GLUT_CURSOR_LEFT_ARROW = $0001
#GLUT_CURSOR_INFO = $0002
#GLUT_CURSOR_DESTROY = $0003
#GLUT_CURSOR_HELP = $0004
#GLUT_CURSOR_CYCLE = $0005
#GLUT_CURSOR_SPRAY = $0006
#GLUT_CURSOR_WAIT = $0007
#GLUT_CURSOR_TEXT = $0008
#GLUT_CURSOR_CROSSHAIR = $0009
#GLUT_CURSOR_UP_DOWN = $000A
#GLUT_CURSOR_LEFT_RIGHT = $000B
#GLUT_CURSOR_TOP_SIDE = $000C
#GLUT_CURSOR_BOTTOM_SIDE = $000D
#GLUT_CURSOR_LEFT_SIDE = $000E
#GLUT_CURSOR_RIGHT_SIDE = $000F
#GLUT_CURSOR_TOP_LEFT_CORNER = $0010
#GLUT_CURSOR_TOP_RIGHT_CORNER = $0011
#GLUT_CURSOR_BOTTOM_RIGHT_CORNER = $0012
#GLUT_CURSOR_BOTTOM_LEFT_CORNER = $0013
#GLUT_CURSOR_INHERIT = $0064
#GLUT_CURSOR_NONE = $0065
#GLUT_CURSOR_FULL_CROSSHAIR = $0066
#GLUT_RED = $0000
#GLUT_GREEN = $0001
#GLUT_BLUE = $0002
#GLUT_KEY_REPEAT_OFF = $0000
#GLUT_KEY_REPEAT_ON = $0001
#GLUT_KEY_REPEAT_DEFAULT = $0002
#GLUT_JOYSTICK_BUTTON_A = $0001
#GLUT_JOYSTICK_BUTTON_B = $0002
#GLUT_JOYSTICK_BUTTON_C = $0004
#GLUT_JOYSTICK_BUTTON_D = $0008
#GLUT_GAME_MODE_ACTIVE = $0000
#GLUT_GAME_MODE_POSSIBLE = $0001
#GLUT_GAME_MODE_WIDTH = $0002
#GLUT_GAME_MODE_HEIGHT = $0003
#GLUT_GAME_MODE_PIXEL_DEPTH = $0004
#GLUT_GAME_MODE_REFRESH_RATE = $0005
#GLUT_GAME_MODE_DISPLAY_CHANGED = $0006

Import "freeglut.lib"
  glutCreateWindow(Title.p-ascii)
  glutDisplayFunc(*Proc)                    
  glutIdleFunc(*func)
  glutGetWindow()                           
  glutInit(argc.i,argv.b)                  
  glutInitDisplayMode(Flags.i)              
  glutInitWindowSize(Width.i,Height.i)     
  glutInitWindowPosition(StartX,StartY.i)  
  glutMainLoop()                            
  glutMainLoopEvent()                       
  glutSetOption(Action.i,Option.i)         
  glutSwapBuffers()                         
  glutSetWindowTitle(title.p-ascii)  
  glutReshapeFunc(*Proc)
  glutKeyboardFunc(*Proc)
  glutTimerFunc(refreshMills.f, *Proc, q.i)
  glutPostRedisplay()
EndImport

Global Dummy.i

ProcedureDLL.i glBox(X.f,Y.f,W.f,H.f)
  glBegin_(#GL_LINE_LOOP)
  glColor4ub_(255,0,100,250)
  glVertex2f_(X - 2,Y)
  glVertex2f_(X + W,Y)
  glVertex2f_(X + W,Y + H)
  glVertex2f_(X - 1,Y + H)
  glEnd_()   
EndProcedure

Procedure.i Render()
  glClear_(#GL_COLOR_BUFFER_BIT)
  glBox(10,10,100,100)
  glutSwapBuffers() 
EndProcedure

Procedure.i Reshape(Width.i,Height.i)
  glViewport_(#Null,#Null,Width,Height)
  glMatrixMode_(#GL_PROJECTION)
  glLoadIdentity_()
  glOrtho_(#Null,Width,Height,#Null,#Null,1)
  glMatrixMode_(#GL_MODELVIEW)
EndProcedure

glutInit(@Dummy,@Dummy)
glutInitDisplayMode(#GLUT_DOUBLE|#GLUT_RGBA)
glutInitWindowSize(400,300)
glutInitWindowPosition(50,50)
glutCreateWindow("Test!")
glutDisplayFunc(@Render())
glutIdleFunc(@Render())
glutReshapeFunc(@Reshape())
glutSetOption(#GLUT_ACTION_ON_WINDOW_CLOSE,#GLUT_ACTION_GLUTMAINLOOP_RETURNS)
glutMainLoop()

Re: Suche freeglut 3.0.0 als statische *.LIB

Verfasst: 19.04.2018 19:26
von ccode_new
Bist du schon weiter gekommen ?

Diese Lib hat viele Abhängigkeiten.

Wie sind die Chancen / wie könnte es funktionieren, wenn man die PureBasic-Datei als .asm ( /COMMENTED ) ausgibt diese Datei mit fasm zu .o packt und direkt mit polink arbeitet ?

Wie müsste/sollte man das handhaben ?

Ich glaube es gibt auch Probleme mit den C-Standards (stdio.h, ....)
Insbesondere für undefinierte __vsnwprintf_s

"Die Funktionen printf und scanf sind jetzt inline definiert.

Die Definitionen aller Funktionen printf und scanf wurden inline in <stdio.h>, <conio.h> und andere CRT-Header verschoben. Dies ist eine brechende Änderung, die zu einem Linker-Fehler (LNK2019, nicht aufgelöstes externes Symbol) für alle Programme führt, die diese Funktionen lokal deklarierten, ohne die entsprechenden CRT-Header einzubeziehen.
Kann man nicht an irgend welchen Einstellungsschrauben beim Bibliothekar (siehe Visual-Studio-Projekt-Einstellungen) (Linker) drehen ?

Was hat es damit zu tun ?: legacy_stdio_definitions.lib

Re: Suche freeglut 3.0.0 als statische *.LIB

Verfasst: 20.04.2018 19:29
von ccode_new
Warum muss/soll das überhaupt "Statisch" sein ?

Dynamisch wäre alles so total einfach.

Re: Suche freeglut 3.0.0 als statische *.LIB

Verfasst: 21.04.2018 00:14
von Mijikai
ccode_new hat geschrieben:Bist du schon weiter gekommen ?
Nein habs aufgegeben.
ccode_new hat geschrieben:Warum muss/soll das überhaupt "Statisch" sein ?
Dynamisch wäre alles so total einfach.
Damit alles aus einem Guss ist.

Re: Suche freeglut 3.0.0 als statische *.LIB

Verfasst: 21.04.2018 16:15
von RSBasic
Ich hab zwar damit Erfahrungen, aber leider keine Zeit gehabt, das Projekt freeglut in Visual Studio zu importieren und eine Lib-Datei zu erstellen.
Aber du kannst ja auch eine DLL-Datei erstellen und anschließend, wie edel in einem anderen Thread vorgeschlagen hat, mit Polib.exe eine Lib-Datei erstellen.
Mijikai hat geschrieben:Damit alles aus einem Guss ist.
Du kannst die DLL-Datei auch inkludieren. Dann ist es auch alles aus einem Guss.