Writing headers for rust generated .so

can someone tell me, how to generate a .h file with .so file in my rust cdylib project

if it cannot automatically do, please tell me how to do it manually , step by step , from writing header to connecting it and running it in saple C program

my rust program takes as input

For creating C-headers from Rust.

https://github.com/eqrion/cbindgen

For generating Rust-"headers" from C.

https://github.com/rust-lang-nursery/rust-bindgen

.so file is not sufficient to generate C headers.

Apart from aforementioned cbindgen, you can write a C header by hand. You need to know what functions Rust program exports (C can't call any random Rust function, but only functions with #[no_mangle] extern annotation) and write matching prototypes in C syntax.

cbindgen failed , it says it does not know CString

yes , i want to handwrite them , ive used #[no_mangle] and extern keyword

dependency walker confirms

You can't use CString as an argument. It's not actually a C-compatible string. It's a helper object for making pointers to C-compatible strings, but it's not a string pointer itself. You have to use *const char in arguments.

2 Likes

how can i convert the *const char to rust string ?

See example on https://doc.rust-lang.org/std/ffi/struct.CStr.html

replacing that CString with *const char should fix problem with Cbindgen?

yeah , it did solve