(四)electron尝试使用win32 API——node-gpy到底是干嘛的?
来源:互联网 发布:node sass下载失败 编辑:程序博客网 时间:2024/05/22 05:19
--------------------------------------DAY 4--------------------------------------------------------------
Q:测试之后,发现electron已经可以准确的知道windows进程的窗口句柄HWND,接下来要利用ipc,把electron进程的主窗口发送给HWND
Q:在git bash的命令行下直接输入python ,提示 bash: python: command not found
A: 我重新安装了python 2.7————这回换成了32位的msi文件来安装,然后输入npm install 又出现了新的问题。
Q: 归根结底就是 ffi的安装问题,参考 https://futurestud.io/tutorials/how-to-build-nodegyp-to-run-bcrypt-on-windows 先来一遍 node-gyp的安装
最后,node-gyp似乎安装好了。
知其然,还要知其所以然,node-gyp是一个本地插件生成工具
Q:在运行node-gyp config的时候出现了错误,也就是说,我们的node-gyp是有错误的:
binding.gyp not found (cwd: C:\Users\admin\Desktop\electron_example) while trying to load binding.gyp
A: 也就是说找不到这个文件,我根据 https://github.com/nodejs/node-gyp#installation 的指引,手动创建了一个————欲知后事如何,请往下阅读
重新来一遍,在原来的electron运行成功的前提下再来一次
npm install -g node-gyp 全局安装node-gyp -----------> 安装成功
输入命令 npm config set msvs_version 2013 搞定2013版本
接下来其实就是 node-gyp怎么使用的问题!!!————————是不能直接用npm install ffi来安装的,会报错,缺少几个文件
Q:那么src\binding.cc, node_modules\ref\build\binding.vcxproj 这2个文件该如何生成呢??————一脸懵逼???
Q:报错:某.node文件was compiled against a different Node.js version using NODE_MODULE_VERSION 51. This version of Node.js requires
NODE_MODULE_VERSION 53. Please try re-compiling or re-installing the module (for instance, using `npm rebuild` or`npm install`).
A:参考 https://stackoverflow.com/questions/42616008/node-module-version-conflict-when-installing-modules-for-electron——————按照上面的方法解决了- -
http://blog.csdn.net/jackyvan/article/details/47261365
binding.node这个是我们用node-gyp生成来的,我们的node-gyp还没有完全配置好,肯定生成出来的程序不完整,就不是一个有效的exe啦
所以,归根结底还是node-gyp安装之后的配置,第一步是 node-gyp configure, 那么对应的binding.gyp 是干什么用的呢
决定卸载重装全部再来一次0 0
node.js(含npm)重新装了
electron重装可以运行了
node-gyp也重装了(没有自带,亲测)——————安装之后也是可以直接uninstall卸载的
准备回家试试node-gyp这个东西,它的作用是让node调用C++的DLL ——————参考 https://www.npmjs.com/package/ffi
在不安装node-gyp的情况下,基本没问题。
安装了node-gyp之后,也对原文件没有影响
其实,我该仔细研究一下node-gyp, 为什么安装ffi之间一定要安装node-gyp呢?
报错: C:\Users\admin\.node-gyp\8.9.1\ia32\node.lib : fatal error LNK1127: 库已损坏
node-gyp应该是让我们可以加入一些C语言给我们的node调用,猜测ffi就是用C语言写好的兼容node.js的win32 API的封装。利用node-gyp去安装好ffi这个模块
Q:测试之后,发现electron已经可以准确的知道windows进程的窗口句柄HWND,接下来要利用ipc,把electron进程的主窗口发送给HWND
A:原生的API做不到,我们要导入win32的DLL和库之类的东西,在electron里面调用user32.dll里面的sendMessage函数
————参考 https://www.cnblogs.com/Starts_2000/p/electron-ffi.html
先安装Python 2.7(x64), 然后设置好环境变量,可以在cmd下直接输入python命令得到相应的提示Q:准备使用命令 npm install来安装依赖包ffi, 发现报错:
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.A: 先使用 npm install -g node-gyp 命令安装node-gyp, 再使用命令
Q:在git bash的命令行下直接输入python ,提示 bash: python: command not found
A:在cmd中有python的环境变量,但是不知道为什么在git bash的命令行下没有,在cmd下输入命令npm install也是同样的问题,找不到python
原来是因为在用户环境变量中设置了,但是没有在系统环境变量中设置
Q:安装python 2.7 ,在cmd下输入python有反应————说明环境变量设置没有问题,但是在输入npm install去安装ffi依赖包时,就提示找不到PythonA: 我重新安装了python 2.7————这回换成了32位的msi文件来安装,然后输入npm install 又出现了新的问题。
Q: 归根结底就是 ffi的安装问题,参考 https://futurestud.io/tutorials/how-to-build-nodegyp-to-run-bcrypt-on-windows 先来一遍 node-gyp的安装
最后,node-gyp似乎安装好了。
知其然,还要知其所以然,node-gyp是一个本地插件生成工具
Q:在运行node-gyp config的时候出现了错误,也就是说,我们的node-gyp是有错误的:
binding.gyp not found (cwd: C:\Users\admin\Desktop\electron_example) while trying to load binding.gyp
A: 也就是说找不到这个文件,我根据 https://github.com/nodejs/node-gyp#installation 的指引,手动创建了一个————欲知后事如何,请往下阅读
重新来一遍,在原来的electron运行成功的前提下再来一次
npm install -g node-gyp 全局安装node-gyp -----------> 安装成功
输入命令 npm config set msvs_version 2013 搞定2013版本
接下来其实就是 node-gyp怎么使用的问题!!!————————是不能直接用npm install ffi来安装的,会报错,缺少几个文件
Q:那么src\binding.cc, node_modules\ref\build\binding.vcxproj 这2个文件该如何生成呢??————一脸懵逼???
Q:报错:某.node文件was compiled against a different Node.js version using NODE_MODULE_VERSION 51. This version of Node.js requires
NODE_MODULE_VERSION 53. Please try re-compiling or re-installing the module (for instance, using `npm rebuild` or`npm install`).
A:参考 https://stackoverflow.com/questions/42616008/node-module-version-conflict-when-installing-modules-for-electron——————按照上面的方法解决了- -
Q:再次运行,出现了新问题,如下图:
http://blog.csdn.net/jackyvan/article/details/47261365
binding.node这个是我们用node-gyp生成来的,我们的node-gyp还没有完全配置好,肯定生成出来的程序不完整,就不是一个有效的exe啦
所以,归根结底还是node-gyp安装之后的配置,第一步是 node-gyp configure, 那么对应的binding.gyp 是干什么用的呢
决定卸载重装全部再来一次0 0
node.js(含npm)重新装了
electron重装可以运行了
node-gyp也重装了(没有自带,亲测)——————安装之后也是可以直接uninstall卸载的
准备回家试试node-gyp这个东西,它的作用是让node调用C++的DLL ——————参考 https://www.npmjs.com/package/ffi
在不安装node-gyp的情况下,基本没问题。
安装了node-gyp之后,也对原文件没有影响
其实,我该仔细研究一下node-gyp, 为什么安装ffi之间一定要安装node-gyp呢?
报错: C:\Users\admin\.node-gyp\8.9.1\ia32\node.lib : fatal error LNK1127: 库已损坏
重点参考 http://deadhorse.me/nodejs/2012/10/08/c_addon_in_nodejs_node_gyp.html(尝试看懂node-gyp的作用)————binding.gyp指定C部分源文件路径和最终生成模块的名称,此例中将会生成一个可以被node调用的binding.node文件,如下:
{ 'targets': [ { 'target_name': 'binding', 'sources': [ 'binding.cc' ] } ]}http://blog.csdn.net/cut001/article/details/68922780
node-gyp应该是让我们可以加入一些C语言给我们的node调用,猜测ffi就是用C语言写好的兼容node.js的win32 API的封装。利用node-gyp去安装好ffi这个模块
阅读全文
0 0
- (四)electron尝试使用win32 API——node-gpy到底是干嘛的?
- UIView的bounds到底是干嘛的
- 学生总结(二)——学生中单引号到底是干嘛的
- kill 命令到底是干嘛的
- 交互设计师到底是干嘛的
- 处理使用node-gpy时遇到的Can't find "msbuild.exe"错误
- 阿里的dubbo 到底是用来干嘛的?
- 科普文:自然语言处理到底是干嘛的
- eclipse 中的Task List 到底是干嘛的
- git user.name user.email到底是干嘛用的
- 图片Premultiplied Alpha到底是干嘛用的
- github 这个网站到底是干嘛用的?
- 最优化理论与凸优化到底是干嘛的?
- (五下)安装ffi模块,使用electron调用win32 api, win32项目设置父子窗口关系
- 问题四:C++中inline是干嘛用的
- electron 使用原生node 模块
- @override是干嘛的?
- Hadoop是干嘛的
- git fatal: index file smaller than expected
- 模板生成_100
- LeetCode.456 Pattern
- [使用许可证服务器破解IDEA]
- CPU预取与性能简介
- (四)electron尝试使用win32 API——node-gpy到底是干嘛的?
- 【转】Android权限管理
- Android Multimedia框架总结(二十四)MediaMuxer实现手机屏幕录制成gif图
- 认识 python 的 yeild 和 generator
- 一个UDP包的固定分包丢包问题
- Linux网络问题定位工具
- 【深入PHP 面向对象】读书笔记(二十二)
- SSD卡的性能特性
- 使用Jetson TX2为Raspberry Pi3编译Qt5.9