dll找不到dll electron_electron项目构建打包却少dll文件的问题解决办法

在 Electron 项目中,遇到开发环境运行正常,但打包后调用dll失败的问题。原因是构建过程中dll未被正确打包。通过分析,发现构建只合并了html,css,js等文件,未包含dll。解决方法是在`package.json`的`build`配置中使用`extraResources`字段,指定需要打包的dll文件路径,确保dll在生产环境中可用。" 7437736,949380,Android PopupWindow点击外部关闭实现,"['Android开发', 'UI交互', '事件处理', 'PopupWindow']
摘要由CSDN通过智能技术生成

最近,在做electron项目中,使用了第三方dll,开发环境运行一切正常,可是当我们打包,最后生成的可执行程序再执行,发现调用dll总是不成功,猜测是少了dll。

后来发现果真是路径问题,我们开发环境,可以通过path.resolve()或着path.join()来指定任意目录下的dll,但是问题来了,到了构建生产环境的时候,我们想象的目录并没有按照开发环境的目录来进行打包了。

很明显的一条就是,我们在根目录下的package.json等文件就没有build到项目的根目录下。构建的时候,只是把相关的html,css,js等文件进行了合并压缩。而dll并不在这些文件之列,自然就不会打包到项目中了。

既然问题明确了,那就需要解决这个打包除html,css,js等文件之外的文件问题了。

好在package.json配置build节点下有这么一个配置项:extraResources:[{from:'',to:''}],我们只需要将我们需要打包的文件加入到这个配置中即可。

比如,我把dll文件放在了static目录下,这样呢,最后build的时候,不会生成这个目录,但是会有一个resources目录,而这个目录似乎就是根目录的一个软链接。代码中,可以这样写:

var dllpath = path.resolve(__dirname,"../../../static/visadll.dll");

if(process.env.NODE_ENV == 'production'){

dllpath = path.resolve(__dirname,"../../../visadll.dll");

}

项目结构如下所示:

|-static/

|-src/renderer/components/

我的vue文件代码所在位置的上三级目录与static的位置是同一级。

这样,package.json的配置项build下的extraResouces配置如下:

ea85bb6f5ebbb2c9c23548c9dd399657.png

这些需要的文件会打包到根目录下的resources目录下。这个目录很奇怪的地方在于,它虽然是根目录下的resources,但是它在path.resolve()解析到根目录即可,他会自动包含resources目录。

如下图所示,我们经过新的配置并构建,构建完成,打包后项目根目录下的resources目录就会包含我们的dll文件了。

8a610013b130836da8328a630b02084b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值