rust中如何将DLL打包到可执行程序中
我在rust中用libloading引入dll文件,执行一些函数
使用cargo打包成exe后,需要把exe和dll放在同一个目录下,程序才能运行
请问有什么方法在打包exe的时候,将dll包含在里面,先谢谢了
补充,通过了解,我发现可以使用 include_bytes!
宏来载入文件或资源
载入的数据是&static [u8]
格式的,但是Library::new(library_path).unwrap()
我查看文档,new() 需要的是AsRef<OsStr>
所以想问下,如何把&[u8]
转换为可传递给Library::new()的格式
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
想了一下,
includes_bytes!
是 bytes 数据,而Library期望的是一个路径,应该没有这种操作duang的就转换过来了或者有什么方法可以实现我问题中的需求,我还没有接触到
于是,退一步,曲线救国,把DLL加载到EXE程序,在EXE运行时把DLL动态生成出来,再调用DLL
这样只需要分发单个EXE文件,不必担心DLL丢失
includes_bytes!
在编译的过程中把静态文件注入到程序中最好生成的时候判断有没有这个DLL,避免每次都重新生成