I am trying to use the C++ library Box2D (forked here simply to have a shared library build): https://github.com/goretkin/Box2D/tree/master/Box2D
My issue might just be that I do not know how to include a header which includes headers from an include directory.
This is what I tried:
using Cxx const path_to_lib = "/Users/goretkin/repos/Box2D/Box2D/Build/gmake/bin/Debug" addHeaderDir(path_to_lib, kind=C_System) Libdl.dlopen(path_to_lib * "/libBox2Ddyn.dylib", Libdl.RTLD_GLOBAL)
And then run
julia> cxx"#include \"/Users/goretkin/repos/Box2D/Box2D/Box2D/Box2D.h\"" In file included from :1: In file included from __cxxjl_12.cpp:1: /Users/goretkin/repos/Box2D/Box2D/Box2D/Box2D.h:34:10: fatal error: 'Box2D/Common/b2Settings.h' file not found #include "Box2D/Common/b2Settings.h" ^ true julia> cxx"#include \"/Users/goretkin/repos/Box2D/Box2D/Box2D/Box2D.h\"" true
I can’t tell whether it succeeded the second time, or it was quiet about failing. My guess is that it’s quiet about failing. The same behavior is true with
cxxinclude("/Users/goretkin/repos/Box2D/Box2D/Box2D/Box2D.h"). It seems it doesn’t matter if I try to
addHeaderDir the directory which contains
I remained hopeful and tried
julia> @cxxnew b2Vec2() ERROR: Could not find `b2Vec2` in translation unit julia> cxx" #include \"/Users/goretkin/repos/Box2D/Box2D/Box2D/Box2D.h\" b2Vec2 gravity(0.0f, -10.0f); " __cxxjl_11.cpp:3:8: error: unknown type name 'b2Vec2' b2Vec2 gravity(0.0f, -10.0f); ^ true
julia> VERSION v"0.5.2" julia> Pkg.installed("Cxx") v"0.1.1"
And I think this is not relevant yet, but
$ nm libBox2Ddyn.dylib | c++filt | grep "b2Vec2(" 0000000000001df0 unsigned short b2Vec2::b2Vec2(float, float) 0000000000001fc0 unsigned short b2Vec2::b2Vec2() 0000000000001e20 unsigned short b2Vec2::b2Vec2(float, float) 0000000000001fe0 unsigned short b2Vec2::b2Vec2()