extern { fn run_node(); } fn main() { println!("a surprise to be sure, but a welcome one"); unsafe { run_node(); } } // mod libnode; // mod sys; // mod node_start; // use std::ffi::{c_char, CString}; // fn main() -> anyhow::Result<()> { // node_start::node_start(&[ // "--no-warnings=ExperimentalWarning".to_string(), // "/root/development/scratch/cpp/test.js".to_string(), // ]); // Ok(()) // } // fn main() -> anyhow::Result<()> { // unsafe { // let libnode = libloading::Library::new("/root/development/alshdavid/libnode/node/out/Release/libnode.so.131")?; // let node_start = libnode.get::<libnode_start>(b"node_start\0")?; // println!("{:?}", node_start); // // let mut result = &std::ptr::null_mut(); // let cstr_argv: Vec<CString> = [ // "".to_string(), // "/root/development/scratch/cpp/test.js".to_string(), // ].iter() // .map(|arg: &String| CString::new(arg.as_str()).unwrap()) // .collect(); // let mut p_argv: Vec<_> = cstr_argv.iter() // do NOT into_iter() // .map(|arg| arg.as_ptr()) // .collect(); // p_argv.push(std::ptr::null()); // let p: *const *const c_char = p_argv.as_ptr(); // node_start(2, p); // }; // Ok(()) // } // NODE_EXTERN int Start(int argc, char* argv[]); // type libnode_start = unsafe fn(argc: i32, *const *const c_char);//, *const c_char);