桌面端electron-vue实战调用c++生成的DLL(刷法接口)

温馨提示:创建一个electron-vue脚手架工程,不懂的创建electron-vue脚手架工程的老铁,可参考我上一个写的博客(node搭建eletrcon-vue脚手架框架开发桌面端程序 链接:https://blog.csdn.net/qq1020654861/article/details/109294117

1.脚手架创建成功后,查看electron版本是否最新的,最新的版本我也不知道会出现什么样的问题,我采用的是electron:2.0.18

2.修改electron 32位 命令(:npm install --arch=ia32 electron)在此之前,请删掉当前node_modules依赖,删除后执行命令,然后在执行(cnpm install)

3.node_modules依赖下载成功后,导入到node_modules所需的FFI依赖,导入成功后在当前目录中建立一个DLL文件夹(DLL文件夹下放你的dll文件)

提示:FFI架包因上传不上去,需要的请留言 一对一发送

C++测试代码

test.h

class TESTDLL_API CtestDll {
public:
	CtestDll(void);
};
 
extern "C"
{
	TESTDLL_API int Double(int a);
}

test.cpp

// testDll.cpp : 定义 DLL 的导出函数。
//
 
#include "test.h"
 
// 这是导出函数的一个示例。
TESTDLL_API int Double(int a)
{
    return a*2;
}

electron调用DLL代码

'use strict';

const ffi = require('ffi');
const path = require('path');
const demo = ffi.Library(path.join(__dirname, '../../../../../../dll/dlltest.dll'), {
    "Double": ['int', ['int']]
});

4.调用DLL文件的JS写好后找到当前的项目的index.ejs文件中把JS导入进去 (如下图所示)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>my-project</title>
    <% if (htmlWebpackPlugin.options.nodeModules) { %>
      <!-- Add `node_modules/` to global paths so `require` works properly in development -->
      <script>
        require('module').globalPaths.push('<%= htmlWebpackPlugin.options.nodeModules.replace(/\\/g, '\\\\') %>')
      </script>
    <% } %>
  </head>
  <script type="text/javascript" src="../index.js"></script>
  <body>
    <div id="app"></div>
    <!-- Set `__static` path to static files in production -->
    <% if (!process.browser) { %>
      <script>
        if (process.env.NODE_ENV !== 'development') window.__static = require('path').join(__dirname, '/static').replace(/\\/g, '\\\\')
      </script>
    <% } %>

    <!-- webpack builds are automatically injected -->
  </body>
</html>

5.在vue面中的mounted页面初始化加载中调用DLL接口(如下图所示)  温馨提示:我DLL中的Double接口返回的是一个a*2 所以按道理来说我输入2 会返回给我一个4

6.运行程序 npm run dev 打开程序后会发现控制台中输出结果为(以下图所示)

7.大功告成 哦耶

 

错误提示:报Error: Dynamic Retrieval Win32error 126是(DLL路径没找到)

错误提示:报Error: Dynamic Symbol Retrieval Error: Win32 error 127 (生成的c++ dll有问题,没有导出,所以调用dll的时候找不到对应的方法)

报错 Error: Dynamic Linking Error: Win32 error 193 (dll错生成了86位的。改成64位即可)

 

需要demo项目的留言即可 一对一发送噢 哦吼

适用人群 Java开发人员,Vue开发人员,前后分离开发人员,权限管理和配置开发人员 课程概述 【讲师介绍】 讲师职称:               现某知名大型互联网公司资深架构师,技术总监,职业规划师,首席面试官,曾在某上市培训机构,高校任教多年。             Array(Array老师)10多年互联网公司实战经验,知名的大型互联网公司的架构师,高管等职,在企业长期从事于技术的源码阅读和新技术的研究;擅长于职业规划,面试辅导,从事面试官多年;擅长于JAVA,人工智能AI应用,Xmind等等,曾服役于国内某上市培训机构数年,独特的培训思路,培训体系,培训方式,实践的职场技能,职场现状,职场晋升等让你快速适应企业职场的所需。  【课程介绍】 技术选型 开发环境:Eclipse/Idea ,JDK 1.8以上  后技术 核心框架:SpringBoot2.x框架系列(同样适用Springcloud F版本以后的版本),如下(节选):     持久层框架:MyBatis 3.x + Mybatis-plus 3.x 日志管理:SLF4J 1.7 + Log4j2 2.7 工具类:Apache Commons、Jackson 、fastjson、Gson 权限验证 前技术   Vue   Vue-cli ElementUI ---https://element.eleme.io/ JSX (JavaScript Xml) 前台的权限验证和路由设置 开发模式        前后分离的开发 数据库        Mysql5 IDE     Intellij Idea
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页