Rewritten version of the MiniLibX graphics API used by 42, using glfw & glad. Running on OpenGL.

Overview

42MLX_Logo
Written by W2.Wizard for the 42 Network

License GPL2.0 Linux MacOS Windows Build Forks

A recreation of the MiniLibX library used by 42, using GLFW & glad, running on OpenGL. The goal of MLX42 is to replace the outdated and stale MiniLibX library.

For information and documentation about MLX42 check the wiki.

Differences to MiniLibX

Cross-Platform

The main idea of MLX42 is to be a cross-platform graphics interface. In 42 everything runs (currently) on MacOS, but it's very useful to be able to work remotely on different machines. With MiniLibX this is not possible.

Documented

Almost all functions and types are fully documented giving you a clue as to how to approach and use the library. No more guessing and searching how something functions or is supposed to work.

Custom XPM (XPM42) format

A custom simple to use XPM-like format which has some minor differences to the XPM3 format.

Almost identical usage to MiniLibX

Switching to MLX42 from MiniLibX is not a lot of work, most features present in MiniLibX are also present in MLX42, albeit with different prototypes.

Installation

In the very end a library is generated, compile your program with this library!

For MacOS:

  1. Download MLX42
~ git clone https://github.com/codam-coding-college/MLX42.git

Via Homebrew / Homebrew42 by building from source.

  1. Install GLFW
~ brew update
➜  ~ brew install glfw
  1. Compile MLX42
~ cd MLX42
➜  ~ make
  1. Compile Program With the normal brew version you can now simply compile the program with:
~ gcc main.c libmlx42.a -lglfw ...

You might have to specify the location explicitly:

~ gcc main.c libmlx42.a -lglfw -L /opt/homebrew/Cellar/glfw/3.3.6/lib/

However, with 42Homebrew you have additionally specify the location of the library like here:

~ gcc main.c libmlx42.a -I include -lglfw -L "/Users/$USER/.brew/opt/glfw/lib/"

Pre-compiled libraries

  1. Download the binaries directly here.

  2. If possible move the contents of lib and include of GLFW to /usr/local/lib and /usr/local/include respectively. If not possible, move the lib file to the root of MLX42 and move the GLFW directory in include to the include of MLX42. NOTE: For the lib choose the appropriate .a & .dylib file depending on your architecture.

  3. Compile MLX42

~ cd MLX42
➜  ~ make

When compiling with the static library, directly you should compile your program like this:

~ gcc main.c libmlx42.a libglfw3.a ... -framework Cocoa -framework OpenGL -framework IOKit

Else, simply compile like this:

~ gcc main.c libmlx42.a -lglfw ...
  1. Run

In case of any security warnings or MacOS telling you it can't verify the author/developer, go to Settings > Security & Privacy. There will be a pop-up at the bottom telling you that an application tried to run, click the option to let it run.

For Linux:

NOTE: This will not run with Windows Subsystem for Linux (WSL)!!!

  1. Install the necessary packages:
~ sudo apt update
➜  ~ sudo apt install build-essential libx11-dev libglfw3-dev libglfw3 xorg-dev

NOTE: For arch-linux you might also have to do sudo apt install glfw-x11 if available.

  1. Download MLX42 & Build
~ git clone https://github.com/codam-coding-college/MLX42.git
➜  ~ cd MLX42
➜  ~ make
  1. Create a main.c file, include MLX42/MLX42.h, compile with -ldl -lglfw , make sure to also do -I <include_path>.

  2. Run.

The systems below have not been tested yet.

For Windows:

  1. Download & Install MinGW: Here!

  2. Simply click continue, select whatever your choice is. Once reaching the MinGW Installation Manager select:

    • mingw32-base
    • mingw32-gcc-g++
  3. Apply by going to Installation > Apply Changes, after it's done, you may close the window.

  4. Download & Install CMake: Here!, use the installer. Simply select all default options.

  5. Download & Install GnuWin: Here!

  6. If you used all default options, add these paths to your SYSTEM Environment variables:

  • C:\MinGW\bin
  • C:\Program Files\CMake\bin
  • C:\Program Files (x86)\GnuWin32\bin
  1. Download GLFW: https://www.glfw.org/download.html

  2. Open the terminal and type cmake-gui, select the downloaded/extracted source folder, select any place you want the build output to be.

  3. Click on configure once and select the MinGW Makefiles, then finish.

  4. Set the CMAKE_INSTALL_PREFIX to C:/GLFW

  5. Click on configure again, and then generate.

  6. Go to the build directory and do:

  • make
  • make install
  1. Go to the directory you assigned in Step 10. Copy the GLFW folder in the include folder to C:\MinGW\include & copy the .a file in the lib folder to C:\MinGW\lib.

  2. Compile your program with these flags:

  • -lglfw3
  • -lopengl32
  • -lgdi32

In the end you should have something like:

~ gcc main.c <Additional .c Files> libmlx42.a -lglfw3 -lopengl32 -lgdi32
  1. Run.

Example

MLX42

/* ************************************************************************** */
/*                                                                            */
/*                                                        ::::::::            */
/*   main.c                                             :+:    :+:            */
/*                                                     +:+                    */
/*   By: W2Wizard <[email protected]>              +#+                     */
/*                                                   +#+                      */
/*   Created: 2022/01/31 00:40:08 by W2Wizard      #+#    #+#                 */
/*   Updated: 2022/01/31 00:41:56 by W2Wizard      ########   odam.nl         */
/*                                                                            */
/* ************************************************************************** */

#include "MLX42/MLX42.h"
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <memory.h>
#define WIDTH 256
#define HEIGHT 256

mlx_image_t	*g_img;

void	hook(void *param)
{
	mlx_t	*mlx;

	mlx = param;
	if (mlx_is_key_down(param, MLX_KEY_ESCAPE))
		mlx_close_window(param);
	if (mlx_is_key_down(param, MLX_KEY_UP))
		g_img->instances[0].y -= 5;
	if (mlx_is_key_down(param, MLX_KEY_DOWN))
		g_img->instances[0].y += 5;
	if (mlx_is_key_down(param, MLX_KEY_LEFT))
		g_img->instances[0].x -= 5;
	if (mlx_is_key_down(param, MLX_KEY_RIGHT))
		g_img->instances[0].x += 5;
}

int32_t	main(void)
{
	mlx_t	*mlx;

	mlx = mlx_init(WIDTH, HEIGHT, "MLX42", true);
	if (!mlx)
		exit(EXIT_FAILURE);
	g_img = mlx_new_image(mlx, 128, 128);
	memset(g_img->pixels, 255, g_img->width * g_img->height * sizeof(int));
	mlx_image_to_window(mlx, g_img, 0, 0);
	mlx_loop_hook(mlx, &hook, mlx);
	mlx_loop(mlx);
	mlx_terminate(mlx);
	return (EXIT_SUCCESS);
}
Issues
  • Use uint8_t instead of int since the pixels are uint8_t

    Use uint8_t instead of int since the pixels are uint8_t

    The only reason the int type worked is because coincidentally each pixel is four bytes, but it could've just as well been any other number of bytes.

    It might be desirable to introduce a constant for the 4/sizeof(uint8_t) * 4 like BYTES_PER_PIXEL instead.

    Documentation 
    opened by MyNameIsTrez 3
  • Makefile cleanup and fixes

    Makefile cleanup and fixes

    • Add helper function mlx_getline for cross platfrom line reading (getline is not a standard library function and therefor not on windows)
    • Add recursive Makefile wildcard function that replaces both windows's dir and unix's find commands (fixes #23)
    • Add generic rule for "compiling" shaders
    • Centralise source file variables to top Makefile
    • Fix issue preventing re rule from being used with multi-threading
    • Fix typo in variable comparison for generic homebrew path libglfw location
    • Switch windows CI/CD from Cygwin to MinGW
    • Switch most variables to simply expanded variables possibly improving performance by a bit
    • Remove comma's from .PHONY
    • Move #!/bin/bash to the top of compile_shaders.sh
    • Always override HEADERS variable
    • Use windows's intended way of print a blank line with echo
    Fix Improvement 
    opened by Eathox 3
  • [BUG] dependent find variable under Linux

    [BUG] dependent find variable under Linux

    while trying to build your library the makefile for Linux was trying to execute find with an absolute path: https://github.com/W2Codam/MLX42/blob/5b5140f9c8b29381b9bcc84a185bad9e2f072aeb/Makefile_Unix.mk#L26 while this work for cygwin certain linux distribution could have there executable somewhere else like Nixos in my case ; this can cause a "file not found" i made a possible solution to this:

    DETECTED_OS := $(shell uname -s)
    
    ifeq ($(DETECTED_OS),Linux)
    
    FIND=find
    
    else
    
    FIND=/usr/bin/find
    
    endif
    
    SHDR	=	src/mlx_vert.c src/mlx_frag.c
    
    SHDRSRC=	shaders/default.frag shaders/default.vert
    
    LIBS	=	$(shell $(FIND) ./lib -iname "*.c")
    
    SRCS	=	$(shell $(FIND) ./src -iname "*.c") $(SHDR) $(LIBS)
    
    

    why: i was about to package your library in a nix package so it can be deployed easly with certain version

    Bug 
    opened by Kampouse 2
  • [BUG] Function passed to mlx_key_hook() seems to get called twice.

    [BUG] Function passed to mlx_key_hook() seems to get called twice.

    Description Function passed to mlx_key_hook() seems to be called twice, when only one key press has occurred.

    To Reproduce

    static void	keycodes(mlx_key_data_t keydata, void *param)
    {
    	if (param)
    		;
    	ft_printf("%c\n", keydata.key);
    }
    
    int	gameloop(t_reality *reality)
    {
    	mlx_key_hook(reality -> mlx, keycodes, NULL);
    	mlx_loop(reality -> mlx);
    	return (TRUE);
    }
    

    Expected behavior When key is pressed, given function to mlx_key_hook() should only run once.

    Desktop

    • OS: Error occurs on MacOS and Arch Linux

    Apologies if this issue is caused by a misunderstanding of the use of hooks.

    Question 
    opened by sdxsd 2
  • Replace compile_shader script with bash variant

    Replace compile_shader script with bash variant

    Replaced the python script used to "compile" the shader C files with a bash variant that does exactly the same. No longer is python required for building.

    Request 
    opened by FreekBes 2
  • [Bug Fix] Segfaults/UB when deleting images with 2 or more instances

    [Bug Fix] Segfaults/UB when deleting images with 2 or more instances

    When trying to delete a image with 2 or more instances it would only delete the first draw queue element, causing segfaults and other weird things when trying to render the leftover draw queue the next frame

    The simplest way to reproduce this segfault would be to compile & run this code:

    void hook(void* param)
    {
    	mlx_t *mlx = param;
    
    	mlx_image_t* g_img = mlx_new_image(mlx, 128, 128);
    	mlx_image_to_window(mlx, g_img, 0, 0);
    	mlx_image_to_window(mlx, g_img, 0, 0);
    	mlx_delete_image(mlx, g_img);
    }
    
    int main()
    {
    	mlx_t* mlx = mlx_init(512, 512, "Segfault Test", true);
    
    	mlx_loop_hook(mlx, &hook, mlx);
    	mlx_loop(mlx);
    }
    

    Apparently my editor automatically removed spaces at the end of lines, so i guess thats in there too

    Bug 
    opened by pajotg 1
  • [REQUEST] Add ability to scale images with window size.

    [REQUEST] Add ability to scale images with window size.

    There is no way to resize an image when the window gets resized. If you comment out line 68 this effect can be achieved, but it would be better to have it as an option somewhere: https://github.com/codam-coding-college/MLX42/blob/0103a86db929f358201ad25d8ddf8bb776b9a1ac/src/mlx_init.c#L67-L69

    Request 
    opened by Raspurrin 1
  • Fix endian dependent color reading

    Fix endian dependent color reading

    Issue

    When reading the HEX colors from a xpm42 file strtol is used over the whole HEX sequence, strtol treats this whole sequence as one number. Therefor when the endian doesn't match the presumed RGBA order the result is not the expected color.

    Sample image with incorrect endian: incorect

    Solution

    Instead of using strtol over the whole HEX sequence, use it only over the individual color channels and then manually bit shift the channels to the expected location.

    Sample image with HEX channel correction: corect

    Fix 
    opened by Eathox 1
  • Bugfix for getting monitor size without any monitors

    Bugfix for getting monitor size without any monitors

    On macOS, glfwGetMonitors seems to be unable to find monitors, rendering the mlx_get_monitor_size method useless, as it does not overwrite the width and heights referenced as pointers in the parameters. Fixed it by setting them to 0 in the beginning, and if an error occurs, those 0's will still be present.

    Fix 
    opened by FreekBes 1
  • [BUG] Minimizing the window in Windows crashes the application

    [BUG] Minimizing the window in Windows crashes the application

    Describe the bug When minimizing the window or clicking on the icon it simply crashes...

    To Reproduce Steps to reproduce the behavior:

    1. Launch the application in windows
    2. Click on the Icon or the minimize widget
    3. RIP

    Expected behavior It should not crash! Even the basic GLFW example doesn't.

    image

    Desktop:

    • OS: Windows 11
    Bug 
    opened by W2Wizard 1
  • Add Windows support to Makefile

    Add Windows support to Makefile

    Added Windows support to the Makefile, mainly for Github Actions. It uses Cygwin instead of MinGW currently mentioned in the README.

    Didn't update the README yet, as I'm in the process of writing a bash script to install components used in the installation. I'll commit that in a separate pull request, as that script will be mainly focused towards end users instead of Github Actions.

    I also split up the Norminette check - it is now a separate task in the build action.

    Request Fix 
    opened by FreekBes 1
Releases(v2.1.0)
  • v2.1.0(Jun 12, 2022)

    42MLX_Logo

    Version: 2.1.0

    In this update you finally have access to the font texture itself. This will allow you to work with the font directly and create any functions that might need it. Additionally the setting 'system' set up before has been replaced with with mlx_set_setting. You can find the settings in the header.

    Bugfix

    • Fix segfault when deleting an image
    • Fix memory leak at mlx_terminate

    Feature Summary

    • Add mlx_get_texoffset
    • Add mlx_get_font
    • Add mlx_set_setting
    • Change X & Y position param from int32_t to uint32_t

    PR's merged

    • [Bug Fix] Segfaults/UB when deleting images with 2 or more instances by @pajotg in https://github.com/codam-coding-college/MLX42/pull/30
    • Update README.md by @hydrasho in https://github.com/codam-coding-college/MLX42/pull/32

    New Contributors

    • @pajotg made their first contribution in https://github.com/codam-coding-college/MLX42/pull/30
    • @hydrasho made their first contribution in https://github.com/codam-coding-college/MLX42/pull/32

    Full Changelog: https://github.com/codam-coding-college/MLX42/compare/v2.0.3...v2.1.0

    Source code(tar.gz)
    Source code(zip)
  • v2.0.3(Apr 19, 2022)

    42MLX_Logo

    Version: 2.0.3

    This patch introduces just a few bug fixes.

    Bug Fixes

    • Fixed missing function definitions in the header for mouse & cursor hook
    • Fixed rendering issue that would cause image_to_window to not change textures.
    • Fixed heap-buffer-overflow when trying to read a xpm42 file.
    Source code(tar.gz)
    Source code(zip)
  • v2.0.2(Apr 6, 2022)

    42MLX_Logo

    Version: 2.0.2

    Overall not many changes just a few QOL stuff, a few bug fixes as well as improvements and some nice makefile overhauling by @Eathox, thank you very much!

    Feature Summary

    • Add assertions for compile time error checking. (Use make DEBUG=1)
    • Add mouse hook function.
    • Add cursor hook function.
    • Re-visit of the Makefiles.
    • Some more minor internal stuff.

    Bug Fixes

    • Fixed a crash when deleting an XPM42 texture object.
    • Fixed a performance issue with rendering.
    • Fixed endian dependent color reading for XPM42

    PRs Merged

    • Fix endian dependent color reading by @Eathox in https://github.com/codam-coding-college/MLX42/pull/25
    • Implement assertions to check for null by @W2Wizard in https://github.com/codam-coding-college/MLX42/pull/26
    • Makefile cleanup and fixes by @Eathox in https://github.com/codam-coding-college/MLX42/pull/24

    New Contributors

    • @Eathox made their first contribution in https://github.com/codam-coding-college/MLX42/pull/25

    Full Changelog: https://github.com/codam-coding-college/MLX42/compare/V2.0.1...v2.0.2

    Source code(tar.gz)
    Source code(zip)
  • V2.0.1(Mar 16, 2022)

    42MLX_Logo

    Version: 2.0.1

    This update introduces a few bug fixes and corrections

    On a different note. MLX42 was extensively used at the Codam Hackathon in March and it was viewed with a lot of positivity. Thank you to everyone who used it and reported their feedback!

    Feature Summary

    • Added mlx_set_instance_depth to set the Z value properly.
    • Added batched rendering to improve the performance!
    • Implemented new scripts so that the dependency on python can be removed.
    • Improved the detection of homebrew.
    • Some more stuff I forgot :D

    Bug Fixes

    • Fixed a memory leak on image deletion.
    • Fixed mlx_errno to be extern instead.

    PRs Merged

    • Proof-of-concept: Batched rendering by @Techdaan in https://github.com/W2Codam/MLX42/pull/19
    • Implement batched rendering by @W2Wizard in https://github.com/W2Codam/MLX42/pull/21 (Integration of #19)
    • Replace compile_shader script with bash variant by @FreekBes in https://github.com/W2Codam/MLX42/pull/18
    • Add generic homebrew path finding option to work with custom homebrew… by @vincentvis in https://github.com/W2Codam/MLX42/pull/22

    New Contributors

    • @Techdaan made their first contribution in https://github.com/W2Codam/MLX42/pull/19
    • @vincentvis made their first contribution in https://github.com/W2Codam/MLX42/pull/22

    Full Changelog: https://github.com/W2Codam/MLX42/compare/v2.0.0...V2.0.1

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Mar 2, 2022)

    42MLX_Logo

    Version: 2.0.0

    This update is a major jump from v1.0.0, as of now MLX42 will no longer follow the norme as explained and mentioned in the announcement #16. Needles to say this makes incompatible API changes.

    Feature Summary

    • Added mlx_put_string.
    • Switched to using error codes instead, code won't have to be rewritten, instead you can now get the error if any occured via mlx_strerror and g_mlx_errno instead of having the error directly omitted onto the terminal.
    • Added proper makefile support to windows
    • General improvement in peformance and rendering
    • Improved stability and error handling
    • Re-wrote the implementation of hooks to be more clean
    • Renamed mlx_putpixel to mlx_put_pixel to stay consistent with naming the convention.
    • Improved documentation for the internal header
    • Some more stuff I forgot :D

    Bug Fixes

    • Fixed a bug in the XPM3 -> XPM42 converter, sometimes some text values would not convert correctly.
    • Fixed an issue in the python script shader converter.
    • Fixed a bug that would cause the application to crash when minimizing the window on Windows.
    • Fixed a bug where mlx_get_monitor_size would not return 0 if it did not find a monitor.
    • Fixed an issue where deletion of an image would cause a segfault.
    Source code(tar.gz)
    Source code(zip)
  • release(Feb 21, 2022)

    42MLX_Logo

    Initial release 🎉

    After a more than a month of work into this project I can proudly say that it is ready to be used for any kind of project in a stable condition. Hope there are no bugs that I have not heard of :D

    Feature Summary

    • Fully norme (except the libraries used)
    • Covers almost all features compared to the original MiniLibX.
    • Useful image manipulation functions.
    • Stable, leak free PNG importing via lodepng.
    • XPM42 Support with added converter (XPM3 -> XPM42).
    • Improved performance.
    • Built-In support for keycodes and simple key detection.
    • Window resizability, callback detection & ability to resize images.
    • Fully Cross-platform (MacOS, Windows & Linux)
    • Automatic window focus on startup
    • No Leaks, compiles with -fsanitize=address

    Todo

    • String to window
    • Some additional callbacks
    • Improve performance
    • Revise error handling with error codes instead
    Source code(tar.gz)
    Source code(zip)
Several GX2 test programs to compare it with OpenGL. (With additional GLFW+OpenGL implementation provided)

GX2-Tests Provided are GX2 test programs and samples for comparison with OpenGL and with additional GLFW+OpenGL implementation for test on PC. These s

AboodXD 1 Nov 15, 2021
OpenGL Template Engine - a C++ OpenGL graphics engine which aimed to be a simple startup template for 3D OpenGL projects.

OpenGL Template Engine is a C++ OpenGL graphics engine which aimed to be a simple startup template for 3D OpenGL projects. This is the template I personally use for my own projects and provides me with the general OpenGL 3D render setup with model import and UI.

Marcus Nesse Madland 2 May 16, 2022
this is my simple voxel engine, appart from librairies like glad it is entierly written in C++ and GLSL

simple-voxel-raycaster this is my simple voxel engine, appart from librairies like glad it is entierly written in C++ and GLSL here is a gif: https://

null 1 Jun 4, 2022
Meatloaf rewritten in C

MeatloafC This repository is Meatloaf (made by Rickaym) rewritten entirely in C99! Copyright (c) 2001-2021 Ricky and Kecky. Index Abstraction Function

null 1 Nov 5, 2021
Ziggified GLFW bindings with 100% API coverage, zero-fuss installation, cross compilation, and more.

mach/glfw - Ziggified GLFW bindings Ziggified GLFW bindings that Mach engine uses, with 100% API coverage, zero-fuss installation, cross compilation,

Hexops 155 Jun 25, 2022
F Graphics Library (FGL) is a small graphics C++ portable library for LCD displays on embedded systems

F Graphics Library (FGL) Full documentation: fgl.docsforge.com (By Filipe Chagas) F Graphics Library is a C++ library that I created for use in embedd

Filipe Chagas 8 Dec 14, 2021
GraphicsFuzz provides tools for automatically finding and simplifying bugs in graphics drivers, specifically graphics shader compilers.

GraphicsFuzz GraphicsFuzz is a set of tools for testing shader compilers GraphicsFuzz provides tools for automatically finding and simplifying bugs in

Google 499 Jun 22, 2022
CSC404: Computer Graphics [CG] & CSL402: Computer Graphics Lab [CG Lab]

COMPUTER-GRAPHICS-AND-COMPUTER-GRAPHICS-LAB CSC404: CG & CSL402: CG LAB [SEMESTER IV] Syllabus CG - Reference Books THE WALL MEGA SATISH - AUTHOR CG C

AMEY THAKUR 7 Apr 28, 2022
A C++ binding for the OpenGL API, generated using the gl.xml specification.

glbinding is a cross-platform C++ binding for the OpenGL API. glbinding leverages C++11 features like enum classes, lambdas, and variadic templates, i

CG Internals 727 Jun 22, 2022
Visualization Library is a C++ middleware for high-performance 2D and 3D graphics applications based on OpenGL 1.x-4.x supporting Windows, Linux and Mac OS X.

Visualization Library 2.2 Gallery About Visualization Library is a C++ middleware for high-performance 2D and 3D graphics applications based on the in

Michele 293 Jun 26, 2022
Modified version of srlua for MSVC using version 5.4 of Lua

Modified version of srlua for MSVC using version 5.4 of Lua. Quote from the original README: This is a self-running Lua interpreter. It is meant to be

Augusto Goulart 2 Feb 24, 2022
Arduino Sketch and a Web Bluetooth API for loading models and running inference on the Nano Sense 33 BLE device.

TF4Micro Motion Kit This repo contains the Arduino Sketch and a Web Bluetooth API for loading models and running inference on the device. Install and

Google Creative Lab 46 Jun 24, 2022
Reference Implementations of P0267, the proposed 2D graphics API for ISO C++

P0267 Reference Implementation Please read the LICENSE before cloning or forking the code as there is important information there! Please see the wiki

cpp-io2d 301 Jun 11, 2022
Gfx - A minimalist and easy to use graphics API.

gfx gfx is a minimalist and easy to use graphics API built on top of Direct3D12/HLSL intended for rapid prototyping. It supports: Full shader reflecti

Guillaume Boissé 236 Jun 24, 2022
The pico can be used to program other devices. Raspberry pi made such an effort. However there is no board yet, that is open-source and can be used with OpenOCD as a general-purpose programmer

pico-probe-programmer The pico can be used to program other devices. Raspberry pi made such an effort. However there is no board yet, that is open-sou

martijn 20 Jan 27, 2022
GLSL optimizer based on Mesa's GLSL compiler. Used to be used in Unity for mobile shader optimization.

GLSL optimizer ⚠️ As of mid-2016, the project is unlikely to have any significant developments. At Unity we are moving to a different shader compilati

Aras Pranckevičius 1.5k Jun 23, 2022
Make CVE-2020-0668 exploit work for version < win10 v1903 and version >= win10 v1903

CVE-2020-0668 Made CVE-2020-0668 exploit work for version < win10 v1903 and version >= win10 v1903 Diaghub Exploit (< v1903) powershell exploit works

null 13 Dec 15, 2021
A header-only version of Instagram Private API in C++

C++ Instagram API A header-only version of Instagram Private API in C++ Getting started. Writing your first bot General API Documentation Usage Error

Denis Beqiraj 35 Jun 4, 2022