【electron-vue】electron与c++程序通讯(socket)
参考从零开始实现Electron应用与C++应用交互npm install --save-dev electron-rebuildnpm install --save nanomsg
安装electron-rebuild
npm install --save-dev electron-rebuild
安装 nanomsg
npm install --save nanomsg
运行报错 NODE_MODULE_VERSION
npm run dev
需要升级到82对应的版本
(参考 nodejs升级的两种方法 这个没用下载不了n,直接去官网下载最新版本)
(参考 node以往的版本 根本找不到82版本的,最后我就安装了最新的83版本 v14.8.0,还是会报错只是报错里67变成了83而已,这里开始怀疑node版本号应该不是问题的关键)
参考 Node - was compiled against a different Node.js version using NODE_MODULE_VERSION 51
electron版本是10.0.0时,怎么都报错
(报错:'.' 不是内部或外部命令,也不是可运行的程序或批处理文件。所以加了双引号)
"./node_modules/.bin/electron-rebuild.cmd"
npm uninstall electron
npm install electron@4.2.12 --save-dev
将electron版本改为4.2.12后 重新执行
"./node_modules/.bin/electron-rebuild.cmd"
运行报错 process is not defined
npm run dev
参考 Webpack ReferenceError: process is not defined #871
参考 electron-vue报错:Webpack ReferenceError: process is not defined
方案一:删除 index.ejs里的这段代码(使用方案一后,还有其他报错,因此弃用方案一,我的electron版本是4.2.12)
使用方案二, webpack.renderer.config.js 和 webpack.web.config.js增加以下代码
templateParameters(compilation, assets, options) {
return {
compilation: compilation,
webpack: compilation.getStats().toJson(),
webpackConfig: compilation.options,
htmlWebpackPlugin: {
files: assets,
options: options
},
process,
};
},
如果两者方案都不行,我看参考的网址里有评论说是这样说的
webPreferences: {
nodeIntegration: true // 添加这一配置
}
终于运行起来了
这个node 是10.11.0?奇怪,我不是才安装了14.8.0么?process.versions.node获取的和 node -v 的版本号不一样是正常的么?(啊!是electron4.2.12里集成的node版本)
js 代码
var nano = require('nanomsg')
var s = nano.socket('req')
//连接C++程序地址
s.connect('tcp://192.168.3.67:12345')
s.send('hello c')
c++测试工程 ConsoleApplication1.cpp
//#include <nanomsg/reqrep.h>
#include "nn.h"
#include "reqrep.h"
#pragma comment(lib,"nanomsg.lib")
using namespace std;
int main() {
int s = nn_socket(AF_SP, NN_REP);
int err = nn_errno();
int rc = nn_bind(s, "tcp://0.0.0.0:12345");
char buf[1000] = { 0 };
for (;;) {
printf("wait next \n");
int rc = nn_recv(s, buf, 1000, 0);
if (rc < 0) {
printf("error: %s\n", nn_strerror(nn_errno()));
}
printf("%s\n", buf);
}
return 0;
}
编译nanomsg
由于新人一枚,网上资料也少,误以为是c++程序用的nanomsg是electron/nodumodule里的,后续c++程序一运行就崩溃。
于是选择自己去官网下载源码(https://github.com/nanomsg/nanomsg/releases),编译nanomsg
参考 : 四种环境下编译nanomsg库
c++测试工程配置
项目右键-属性 -c/c++-常规-附加包含目录 (头文件所在路径)
将nanomsg编译出来的文件拷贝到测试工程里
项目右键-属性 -链接器-常规-附加包含目录 (lib所在路径)
项目右键-属性 -链接器-输入-附加依赖项 (lib文件名)
运行 (服务器和客户端的启动顺序可以不分先后)
以下是:先运行c++项目,运行electron-vue项目的结果
更多推荐
所有评论(0)