2025-08-17 16:10:21 +01:00
2025-08-17 15:58:09 +01:00
2025-08-17 15:52:13 +01:00
2025-08-17 15:52:13 +01:00
2025-08-17 00:44:45 +01:00
2025-08-17 16:20:06 +01:00

bin2hpp

One day we'll get #embed and std::embed, but today is not that day.

CLI tool for converting files into header files which one can use to directly embed data in their C++ projects.

Building

  1. cargo build

Usage

Basic usage

$ bin2hpp -i my_library.dll -o c_header.h will generate an c_header.h file in your current working directory containing something similar to the following:

// Generated by bin2hpp 0.2.4
#ifndef C_HEADER_H
#define C_HEADER_H
#define MY_LIBRARY_DLL_LEN 9728
const unsigned char MY_LIBRARY_DLL[MY_LIBRARY_DLL_LEN] = {0x4d,0x5a,0x90,0x0,0x3,0x0,0x0, ...};
#else
extern const unsigned char MY_LIBRARY_DLL[MY_LIBRARY_DLL_LEN];
#endif

Alternatively, in C++ mode: bin2hpp -i my_library.dll -o cpp_header.hpp --cpp --constexpr --stdarray --i8

// Generated by bin2hpp 0.2.4
#if !defined(CPP_HEADER_HPP)
#define CPP_HEADER_HPP
#include <cstdint>
#include <array>
#define MY_LIBRARY_DLL_LEN 9728
inline constexpr std::array<std::int8_t,MY_LIBRARY_DLL_LEN> MY_LIBRARY_DLL = {0x4d,0x5a,0x90,0x0,0x3,0x0,0x0, ...};
#endif

Note about CLI arguments

Command line arguments are not positional. The input file path argument is the only required command line argument. The command line argument parser will choose the first instance of any provided argument. For example, if you provide the -i argument twice; only the first -i ./file/path will be used. This behaviour should not be relied upon as the implementation of the command line argument parser may change at any time.

Description
Binary & text resource inclusion utility designed for embedding data directly in a C++ executable
Readme 96 KiB
Languages
Rust 100%