Inkognito
Need help configuring Zigler with link_lib
Hi,
I am trying to write a elixir client for
https://github.com/sst/opentui.git
What I am attempting to do is fetch the zig code, compile it in priv and then use it via Zigler.
I cant seem to get Zigler to find the header and/or the link_lib
I am using a x86_64 machine and running in WSL2
error:
\*\* (CompileError) lib/jace/bridge.ex:5: error: C import failed
pub const cc = @cImport(@cInclude(“opentui.h”)).createRenderer;
^\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~
referenced by:
streamModule__anon_24197: .elixir_ls/build/test/lib/zigler/priv/beam/sema.zig:231:45
main: .elixir_ls/build/test/lib/zigler/priv/beam/sema.zig:284:21
4 reference(s) hidden; use ‘-freference-trace=6’ to see all references
/home/archon/.cache/zig/o/4fd94b536b9f26726f3d4aaeabed04ae/cimport.h:1:10: error: ‘opentui.h’ file not found
#include <opentui.h>
Is my approach correct ?
Am I missing something stupid?
Any feedback and/guidance is welcome.
Most Liked
joelpaulkoch
Hey, according to the docs you should specify a relative path: host/... without the leading /. Hope this helps.
joelpaulkoch
The error message that you showed comes from elixir_ls, but is the actual compilation failing with the same error?
Also on the screenshot I can see that the zig code in the _build directory, but how did it get there? Is it in the priv directory of your project too?
Last Post!
Inkognito
Thanks for this, I had a mix.task which was updating the build folder, I have changed it to put it in the correct priv.
@lib {:priv, "zig/lib/x86_64-linux/libopentui.so"}
@header {:priv, "include/"}
use Zig,otp_app: :jace,
c: [link_lib: @lib,include_dirs: @header,library_dirs: @lib],
resources: [:RendererResource,
:OptimizedBufferResource,
:TextBufferResource],
nifs: [...]
now does not throw errors in IDE and , can confirm it is picking up the headers, and lib correctly.
however when i run the app it’s not able to find the .so file
20:12:06.886 [error] loading module Elixir.Jace.Bridge {:load_failed, ~c"Failed to load NIF library /home/archon/work/jace/_build/dev/lib/jace/priv/lib/Elixir.Jace.Bridge: 'libopentui.so: cannot open shared object file: No such file or directory'"}
I am re-reading the docs and trying again,
thanks again !!
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #hex










