Suche freeglut 3.0.0 als statische *.LIB

Für allgemeine Fragen zur Programmierung mit PureBasic.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Suche freeglut 3.0.0 als statische *.LIB

Beitrag 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.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Suche freeglut 3.0.0 als statische *.LIB

Beitrag 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 ?
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Suche freeglut 3.0.0 als statische *.LIB

Beitrag 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.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Suche freeglut 3.0.0 als statische *.LIB

Beitrag 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
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Suche freeglut 3.0.0 als statische *.LIB

Beitrag 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()
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Suche freeglut 3.0.0 als statische *.LIB

Beitrag 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
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Suche freeglut 3.0.0 als statische *.LIB

Beitrag von ccode_new »

Warum muss/soll das überhaupt "Statisch" sein ?

Dynamisch wäre alles so total einfach.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Suche freeglut 3.0.0 als statische *.LIB

Beitrag 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.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Suche freeglut 3.0.0 als statische *.LIB

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten