Code Monkey home page Code Monkey logo

cimplot's Introduction

cimgui Build Status

This is a thin c-api wrapper programmatically generated for the excellent C++ immediate mode gui Dear ImGui. All imgui.h functions are programmatically wrapped. Generated files are: cimgui.cpp, cimgui.h for C compilation. Also for helping in bindings creation, definitions.lua with function definition information and structs_and_enums.lua. This library is intended as a intermediate layer to be able to use Dear ImGui from other languages that can interface with C (like D - see D-binding)

History:

Initially cimgui was developed by Stephan Dilly as hand-written code but lately turned into an auto-generated version by sonoro1234 in order to keep up with imgui more easily (letting the user select the desired branch and commit)

Notes:

compilation

  • clone

    • git clone --recursive https://github.com/cimgui/cimgui.git
    • git submodule update --init --recursive (If already cloned)
  • compile

    • using makefile on linux/macOS/mingw (Or use CMake to generate project)
    • cmake options are IMGUI_STATIC (compiling as static library), IMGUI_FREETYPE (for using Freetype2) and FREETYPE_PATH (Freetype2 cmake install location) (only if cimgui is generated with freetype option)
    • or as in https://github.com/sonoro1234/LuaJIT-ImGui/tree/master/build

    For compiling with backends there are now examples with SDL2 and opengl3/vulkan in folder backend_test. They'll generate a cimgui_sdl module and a test_sdl executable.

using generator

  • this is only needed (before compilation) if you want an imgui version different from the one provided, otherwise generation is already done.
  • you will need LuaJIT (https://github.com/LuaJIT/LuaJIT.git better 2.1 branch) or precompiled for linux/macOS/windows in https://luapower.com/luajit/download
  • you need to use also a C++ compiler for doing preprocessing: gcc (In windows MinGW-W64-builds for example), clang or cl (MSVC). (this repo was done with gcc)
  • update imgui folder to the version you desire.
  • edit generator/generator.bat on windows, or generator/generator.sh on linux, to choose between gcc, clang, or cl and to choose desired backends and whether imgui_internal is generated or not, Freetype2 is used or not and comments are generated or not
  • the defaults of generator are gcc as compiler, imgui_internal included and sdl, glfw, vulkan, opengl2 and opengl3 as backends.
  • edit config_generator.lua for adding includes needed by your chosen backends (vulkan needs that).
  • Run generator.bat or generator.sh with gcc, clang or cl and LuaJIT on your PATH.
  • as a result some files are generated: cimgui.cpp, cimgui.h and cimgui_impl.h for compiling and some lua/json files with information about the binding: definitions.json with function info, structs_and_enums.json with struct and enum info, impl_definitions.json with functions from the backends info.
  • You can pass compiler flags to generator.sh or generator.bat by editing them at the end of the call to further specify the compiler behavior. (e.g. -DIMGUI_USER_CONFIG or -DIMGUI_USE_WCHAR32)
  • You are able to pass any extra argument to generator.sh (.bat) in the command-line.
  • If you are using different options than cimgui repo and if you want to keep them after a cimgui update, you can keep them in a copy of generator.sh (.bat) outside of cimgui folder where cd cimgui/generator is used before luajit call. See #232 (comment)

generate binding

definitions description

  • It is a collection in which key is the cimgui name that would result without overloadings and the value is an array of overloadings (may be only one overloading)
  • Each overloading is a collection. Some relevant keys and values are:
    • stname : the name of the struct the function belongs to (will be "" if it is top level in ImGui namespace)
    • ov_cimguiname : the overloaded cimgui name (if absent it would be taken from cimguiname)
    • cimguiname : the name without overloading (this should be used if there is not ov_cimguiname)
    • ret : the return type
    • retref : is set if original return type is a reference. (will be a pointer in cimgui)
    • argsT : an array of collections (each one with type: argument type and name: the argument name, when the argument is a function pointer also ret: return type and signature: the function signature)
    • args : a string of argsT concatenated and separated by commas
    • call_args : a string with the argument names separated by commas for calling imgui function
    • defaults : a collection in which key is argument name and value is the default value.
    • manual : will be true if this function is hand-written (not generated)
    • skipped : will be true if this function is not generated (and not hand-written)
    • isvararg : is set if some argument is a vararg
    • constructor : is set if the function is a constructor for a class.
    • destructor : is set if the function is a destructor for a class but not just a default destructor.
    • realdestructor : is set if the function is a destructor for a class
    • templated : is set if the function belongs to a templated class (ImVector)
    • templatedgen: is set if the function belongs to a struct generated from template (ImVector_ImWchar)
    • nonUDT : if present the original function was returning a user defined type so that signature has been changed to accept a pointer to the UDT as first argument.
    • location : name of the header file and linenumber this function comes from. (imgui:000, internal:123, imgui_impl_xxx:123)
    • is_static_function : is setted when it is an struct static function.

structs_and_enums description

  • Is is a collection with three items:
    • under key enums we get the enums collection in which each key is the enum tagname and the value is an array of the ordered values represented as a collection with keys
      • name : the name of this enum value
      • value : the C string
      • calc_value : the numeric value corresponding to value
    • under key structs we get the structs collection in which the key is the struct name and the value is an array of the struct members. Each one given as a collection with keys
      • type : the type of the struct member
      • template_type : if type has a template argument (as ImVector) here will be
      • name : the name of the struct member
      • size : the number of array elements (when it is an array)
      • bitfield : the bitfield width (in case it is a bitfield)
    • under key locations we get the locations collection in which each key is the enum tagname or the struct name and the value is the name of the header file and line number this comes from.

usage

  • use whatever method is in ImGui c++ namespace in the original imgui.h by prepending ig
  • methods have the same parameter list and return values (where possible)
  • functions that belong to a struct have an extra first argument with a pointer to the struct.
  • where a function returns UDT (user defined type) by value some compilers complain so the function is generated accepting a pointer to the UDT type as the first argument (or second if belongs to a struct).

usage with backends

example bindings based on cimgui

C examples based on cimgui

cimplot's People

Contributors

gucio321 avatar sonoro1234 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cimplot's Issues

Question regarding types like ImRect

I'm working on the Rust bindings for implot, which are based on cimplot, over in https://github.com/4bb4/implot-rs. I've just tried to update to the latest cimplot master, but now it seems that my bindings generation does not find some types anymore, such as ImRect and ImPoolIdx.

I've looked a bit at the latest commits here and I think my issue might have to do with the move of some includes in 299d29f - I can't seem to figure out what I'm doing wrong though (I tried some combinations of including cimplot.h and cimplot_impl.h, but those don't seem to define ImRect).

Where should ImRect and ImPoolIdx come from? I see they are in imgui.h, but that's a C++ header.

Thanks in advance for any help, I really appreciate the work you're putting into keeping cimplot up to date!

Possibly add a version of the bindings with "internal" turned off

Hi there, thanks for keeping these bindings up to date, I use them every day in several projects via my Rust bindings that build on them.

One snag I have run into is that the version of the bindings in this repo has the internal API exposed, which is nice in terms of enabling the most APIs for users, but unfortunately gets me into trouble (I think, maybe I'm just doing something wrong) with the imgui Rust bindings that use a cimgui version without the internal API exposed (see imgui-rs/imgui-rs#395 (comment)).

I considered forking cimplot and running the generator with the internal flag off or vendoring everything altogether in implot-rs, but of course it would be even nicer to have both a version with "internal" and one without it already in the repo here.

What do you think? Thanks in advance for any help or advice.

set custom path of implot and cimplot as generator's argument

Hi there!
I'm having a problemm in AllenDang/cimgui-go#43
We'd like to use cimplot as a git submodule of cimgui-go, but we met the problemm with paths mentioned above.

In my opinion something like

sh generator.sh --implot="../thirdparty/implot" --cimgui="../thirdparty/cimgui/cimgui.h"

would be more comfortable for people, who use this repository as a git submodule and cannot edit cimplot_template.* file

Missing args for Plot_ShadedG when generating implot 0.14

I'll trying to create a golang binding by using definitions.json.

After manual fixed #12 , and generate bindings for implot 0.14, I got following message.

Apple clang version 13.1.6 (clang-1316.0.21.2.5)
Target: arm64-apple-darwin21.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

HAVE_COMPILER   true
INTERNAL_GENERATION     true
IMPLOT_VERSION  0.14
------------------generation with gcc------------------------
--------------gen_structs_and_enums_table
--------------gen_structs_and_enums
argument without name   TransformForward_Log10  nil     nil     void*
argument without name   TransformInverse_Log10  nil     nil     void*
argument without name   TransformForward_SymLog nil     nil     void*
argument without name   TransformInverse_SymLog nil     nil     void*
argument without name   TransformForward_Logit  nil     nil     void*
argument without name   TransformInverse_Logit  nil     nil     void*
argument without name   Formatter_Logit nil     nil     void*
argument without name   Formatter_Time  nil     nil     double
-----------------check arg detection---------------------------
-----------------end check arg detection-----------------------
{
        ["ImVector"]={
                ["int"]="int"
                ["ImU32"]="ImU32"
                ["bool"]="bool"
                ["ImU64"]="ImU64"
                ["ImGuiColorMod"]="ImGuiColorMod"
                ["ImGuiStyleMod"]="ImGuiStyleMod"
                ["ImPlotAlignmentData"]="ImPlotAlignmentData"
                ["ImS64"]="ImS64"
                ["ImS32"]="ImS32"
                ["ImPlotTag"]="ImPlotTag"
                ["ImPlotRange"]="ImPlotRange"
                ["ImPlotAnnotation"]="ImPlotAnnotation"
                ["ImPlotTick"]="ImPlotTick"
                ["ImPlotColormap"]="ImPlotColormap"
                ["float"]="float"
                ["double"]="double"
                ["ImS8"]="ImS8"
                ["ImU8"]="ImU8"
                ["ImS16"]="ImS16"
                ["ImU16"]="ImU16"}
        ["ImPool"]={
                ["ImPlotAlignmentData"]="ImPlotAlignmentData"
                ["ImPlotPlot"]="ImPlotPlot"
                ["ImPlotSubplot"]="ImPlotSubplot"
                ["ImPlotItem"]="ImPlotItem"}}


{
        ["ImChunkStream"]="T"
        ["ImPool"]="T"
        ["ImSpanAllocator"]="int CHUNKS"
        ["ImVector"]="T"
        ["ImBitArray"]="int BITCOUNT, int OFFSET = 0"
        ["ImSpan"]="T"}


copyfile        ./output/cimplot.h      ../cimplot.h
copyfile        ./output/cimplot.cpp    ../cimplot.cpp
all done!!

When I tried to use it, I noticed that following function's args are not match.

implot.h

IMPLOT_API void PlotShadedG(const char* label_id, ImPlotGetter getter1, void* data1, ImPlotGetter getter2, void* data2, int count, ImPlotShadedFlags flags=0);

cimplot.h

CIMGUI_API void ImPlot_PlotShadedG(const char *label_id, ImPlotPoint_getter getter1, void *data1,
                                   ImPlotPoint_getter getter2, void *data2, int count);

We can see the definition in json is correct.

definitions.json

  "ImPlot_PlotShadedG": [
    {
      "args": "(const char* label_id,ImPlotGetter getter1,void* data1,ImPlotGetter getter2,void* data2,int count,ImPlotShadedFlags flags)",
      "argsT": [
        {
          "name": "label_id",
          "type": "const char*"
        },
        {
          "name": "getter1",
          "type": "ImPlotGetter"
        },
        {
          "name": "data1",
          "type": "void*"
        },
        {
          "name": "getter2",
          "type": "ImPlotGetter"
        },
        {
          "name": "data2",
          "type": "void*"
        },
        {
          "name": "count",
          "type": "int"
        },
        {
          "name": "flags",
          "type": "ImPlotShadedFlags"
        }
      ],
      "argsoriginal": "(const char* label_id,ImPlotGetter getter1,void* data1,ImPlotGetter getter2,void* data2,int count,ImPlotShadedFlags flags=0)",
      "call_args": "(label_id,getter1,data1,getter2,data2,count,flags)",
      "cimguiname": "ImPlot_PlotShadedG",
      "defaults": {
        "flags": "0"
      },
      "funcname": "PlotShadedG",
      "location": "implot:860",
      "manual": true,
      "namespace": "ImPlot",
      "ov_cimguiname": "ImPlot_PlotShadedG",
      "ret": "void",
      "signature": "(const char*,ImPlotGetter,void*,ImPlotGetter,void*,int,ImPlotShadedFlags)",
      "stname": ""
    }
  ],

Prebuilt Binaries?

Would love to have prebuilt binaries. I have no clue where to start when trying to build this for myself.

cannot link against implot

I'm trying to compile with g++ -v -std=c++11 *.cpp -I../../../cimgui/imgui -I../../../cimgui -I../../ -o output after successfully generated the cimplot but I got. also tried with #94636d21 commit which before the implot upgrade issue still persist

 Didn't included sake of brevity
  "void ImPlot::PlotBars<float>(char const*, float const*, float const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotBars_FloatPtrFloatPtr in cimplot-73b2f5.o
  "void ImPlot::PlotBars<float>(char const*, float const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotBars_FloatPtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotBars<unsigned char>(char const*, unsigned char const*, unsigned char const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotBars_U8PtrU8Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotBars<unsigned char>(char const*, unsigned char const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotBars_U8PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotBars<int>(char const*, int const*, int const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotBars_S32PtrS32Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotBars<int>(char const*, int const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotBars_S32PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotBars<unsigned int>(char const*, unsigned int const*, unsigned int const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotBars_U32PtrU32Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotBars<unsigned int>(char const*, unsigned int const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotBars_U32PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotBars<short>(char const*, short const*, short const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotBars_S16PtrS16Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotBars<short>(char const*, short const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotBars_S16PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotLine<double>(char const*, double const*, double const*, int, int, int, int)", referenced from:
      _ImPlot_PlotLine_doublePtrdoublePtr in cimplot-73b2f5.o
  "void ImPlot::PlotLine<double>(char const*, double const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotLine_doublePtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotLine<float>(char const*, float const*, float const*, int, int, int, int)", referenced from:
      _ImPlot_PlotLine_FloatPtrFloatPtr in cimplot-73b2f5.o
  "void ImPlot::PlotLine<float>(char const*, float const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotLine_FloatPtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotLine<unsigned char>(char const*, unsigned char const*, unsigned char const*, int, int, int, int)", referenced from:
      _ImPlot_PlotLine_U8PtrU8Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotLine<unsigned char>(char const*, unsigned char const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotLine_U8PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotLine<int>(char const*, int const*, int const*, int, int, int, int)", referenced from:
      _ImPlot_PlotLine_S32PtrS32Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotLine<int>(char const*, int const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotLine_S32PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotLine<unsigned int>(char const*, unsigned int const*, unsigned int const*, int, int, int, int)", referenced from:
      _ImPlot_PlotLine_U32PtrU32Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotLine<unsigned int>(char const*, unsigned int const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotLine_U32PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotLine<short>(char const*, short const*, short const*, int, int, int, int)", referenced from:
      _ImPlot_PlotLine_S16PtrS16Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotLine<short>(char const*, short const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotLine_S16PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotLine<unsigned short>(char const*, unsigned short const*, unsigned short const*, int, int, int, int)", referenced from:
      _ImPlot_PlotLine_U16PtrU16Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotLine<unsigned short>(char const*, unsigned short const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotLine_U16PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotLine<long long>(char const*, long long const*, long long const*, int, int, int, int)", referenced from:
      _ImPlot_PlotLine_S64PtrS64Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotLine<long long>(char const*, long long const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotLine_S64PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotLine<unsigned long long>(char const*, unsigned long long const*, unsigned long long const*, int, int, int, int)", referenced from:
      _ImPlot_PlotLine_U64PtrU64Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotLine<unsigned long long>(char const*, unsigned long long const*, int, double, double, int, int, int)", referenced from:
      _ImPlot_PlotLine_U64PtrInt in cimplot-73b2f5.o
  "ImPlot::PlotText(char const*, double, double, ImVec2 const&, int)", referenced from:
      _ImPlot_PlotText in cimplot-73b2f5.o
  "ImPlot::BeginItem(char const*, int, int)", referenced from:
      _ImPlot_BeginItem in cimplot-73b2f5.o
  "ImPlot::BeginPlot(char const*, ImVec2 const&, int)", referenced from:
      _ImPlot_BeginPlot in cimplot-73b2f5.o
  "ImPlot::DragLineX(int, double*, ImVec4 const&, float, int)", referenced from:
      _ImPlot_DragLineX in cimplot-73b2f5.o
  "ImPlot::DragLineY(int, double*, ImVec4 const&, float, int)", referenced from:
      _ImPlot_DragLineY in cimplot-73b2f5.o
  "ImPlot::DragPoint(int, double*, double*, ImVec4 const&, float, int)", referenced from:
      _ImPlot_DragPoint in cimplot-73b2f5.o
  "ImPlot::FloorTime(ImPlotTime const&, int)", referenced from:
      _ImPlot_FloorTime in cimplot-73b2f5.o
  "ImPlot::MkGmtTime(tm*)", referenced from:
      _ImPlot_MkGmtTime in cimplot-73b2f5.o
  "ImPlot::MkLocTime(tm*)", referenced from:
      _ImPlot_MkLocTime in cimplot-73b2f5.o
  "ImPlot::PlotBarsG(char const*, ImPlotPoint (*)(int, void*), void*, int, double, int)", referenced from:
      _ImPlot_PlotBarsG in cimplot-73b2f5.o
  "ImPlot::PlotDummy(char const*, int)", referenced from:
      _ImPlot_PlotDummy in cimplot-73b2f5.o
  "ImPlot::PlotImage(char const*, void*, ImPlotPoint const&, ImPlotPoint const&, ImVec2 const&, ImVec2 const&, ImVec4 const&, int)", referenced from:
      _ImPlot_PlotImage in cimplot-73b2f5.o
  "ImPlot::PlotLineG(char const*, ImPlotPoint (*)(int, void*), void*, int, int)", referenced from:
      _ImPlot_PlotLineG in cimplot-73b2f5.o
  "void ImPlot::PlotStems<signed char>(char const*, signed char const*, signed char const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_S8PtrS8Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotStems<signed char>(char const*, signed char const*, int, double, double, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_S8PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotStems<double>(char const*, double const*, double const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_doublePtrdoublePtr in cimplot-73b2f5.o
  "void ImPlot::PlotStems<double>(char const*, double const*, int, double, double, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_doublePtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotStems<float>(char const*, float const*, float const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_FloatPtrFloatPtr in cimplot-73b2f5.o
  "void ImPlot::PlotStems<float>(char const*, float const*, int, double, double, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_FloatPtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotStems<unsigned char>(char const*, unsigned char const*, unsigned char const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_U8PtrU8Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotStems<unsigned char>(char const*, unsigned char const*, int, double, double, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_U8PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotStems<int>(char const*, int const*, int const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_S32PtrS32Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotStems<int>(char const*, int const*, int, double, double, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_S32PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotStems<unsigned int>(char const*, unsigned int const*, unsigned int const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_U32PtrU32Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotStems<unsigned int>(char const*, unsigned int const*, int, double, double, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_U32PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotStems<short>(char const*, short const*, short const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_S16PtrS16Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotStems<short>(char const*, short const*, int, double, double, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_S16PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotStems<unsigned short>(char const*, unsigned short const*, unsigned short const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_U16PtrU16Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotStems<unsigned short>(char const*, unsigned short const*, int, double, double, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_U16PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotStems<long long>(char const*, long long const*, long long const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_S64PtrS64Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotStems<long long>(char const*, long long const*, int, double, double, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_S64PtrInt in cimplot-73b2f5.o
  "void ImPlot::PlotStems<unsigned long long>(char const*, unsigned long long const*, unsigned long long const*, int, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_U64PtrU64Ptr in cimplot-73b2f5.o
  "void ImPlot::PlotStems<unsigned long long>(char const*, unsigned long long const*, int, double, double, double, int, int, int)", referenced from:
      _ImPlot_PlotStems_U64PtrInt in cimplot-73b2f5.o
  "ImPlot::RoundTime(ImPlotTime const&, int)", referenced from:
      _ImPlot_RoundTime in cimplot-73b2f5.o
  "ImPlot::SetupAxes(char const*, char const*, int, int)", referenced from:
      _ImPlot_SetupAxes in cimplot-73b2f5.o
  "ImPlot::SetupAxis(int, char const*, int)", referenced from:
      _ImPlot_SetupAxis in cimplot-73b2f5.o
  "ImGuiStorage::GetInt(unsigned int, int) const", referenced from:
      ImPlotColormapData::GetIndex(char const*) const in cimplot-73b2f5.o
      ImPool<ImPlotItem>::GetByKey(unsigned int) in cimplot-73b2f5.o
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Setup

cimplot: master
cimgui: master
implot: #6c001096
imgui: #9cd9c2ef

Compiler

Compiler: Clang 14.0.0
Target: arm64-apple-darwin22.0.0
OS: MacOS Ventura

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.