我在rust中用libloading引入dll文件,执行一些函数
使用cargo打包成exe后,需要把exe和dll放在同一个目录下,程序才能运行
请问有什么方法在打包exe的时候,将dll包含在里面,先谢谢了
补充,通过了解,我发现可以使用 include_bytes!
宏来载入文件或资源
载入的数据是&static [u8]
格式的,但是Library::new(library_path).unwrap()
我查看文档,new() 需要的是AsRef<OsStr>
所以想问下,如何把&[u8]
转换为可传递给Library::new()的格式
想了一下,
includes_bytes!
是 bytes 数据,而Library期望的是一个路径,应该没有这种操作duang的就转换过来了或者有什么方法可以实现我问题中的需求,我还没有接触到
于是,退一步,曲线救国,把DLL加载到EXE程序,在EXE运行时把DLL动态生成出来,再调用DLL
这样只需要分发单个EXE文件,不必担心DLL丢失
includes_bytes!
在编译的过程中把静态文件注入到程序中最好生成的时候判断有没有这个DLL,避免每次都重新生成