ModularM
Modular3y ago
5 replies
ziyu4huang

How to call function in share library

I try to use external_call to load library and symbol. But I don't know how to call it like C . How to do it in Mojo ??

fn main():
let data = "./libexample.so"
let data_ptr = to_char_ptr(data)
#let flag: c_int = RTLD_NOW
let flag: c_int = RTLD_LAZY

let hdl = external_call["dlopen", c_void, Pointer[c_char], c_int](data_ptr, flag)
print("hdl ", hdl)

if hdl == 0:
let error_msg_cstr = external_call"dlerror", Pointer[c_char]
let msg = StringRef(error_msg_cstr.bitcastInt8)
print("lib_handler error ", msg)
else:
let a = external_call"dlerror", Pointer[c_char]
print("lib_handler ", hdl)
let sym_name = to_char_ptr("hello_world")
let fun_sym = external_call["dlsym", c_void, c_void, Pointer[c_char]](hdl, sym_name)
print("fun_sym", fun_sym)

print("end of main()")
Was this page helpful?