Inkognito

Inkognito

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.

Showing Posts 1 to 4

joelpaulkoch

joelpaulkoch

Hey, according to the docs you should specify a relative path: host/... without the leading /. Hope this helps.

Inkognito

Inkognito OP

I tried it, it did not work :pensive_face: .

https://github.com/acalejos/archive/blob/main/lib/archive/nif.ex

trying to use this as reference for now

joelpaulkoch

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?

Inkognito

Inkognito OP

Hi @joelpaulkoch

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 !!

— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
apz
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews