electron 調用 dll 文件方法,和常見問題解決


 

調用dll動態庫我這里主要用了以下幾個依賴:

"dependencies": {
    "ref-array-napi": "^1.2.0",
    "ref-napi": "^1.4.3",
    "ref-struct-napi": "^1.1.0",
    "ffi-napi": "^2.4.7"
}

注意:dll 是 64位還是 32 位的 ,它和 node 是一致的。
復制代碼

我這里用的 window 7 系統的 其他版本的系統應也是差不多的

實現步驟

安裝ffi之前需要的環境有4個
  1.  python2.x 這里我用的是2.7版本,(3.x不支持); 安裝完成后需要將python設置為環境變量
  2.  .net framework 4.5.1
  3.  visual C++ Build Tools,或者 (vs2015以上(包含15))
  4.  cnpm install --global --production windows-build-tools

1、我這里先將 npm 改為 淘寶鏡像 cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org

2、首先安裝 node-gyp
cnpm install node-gyp -g

3、安裝以上依賴
    "ref-array-napi": "^1.2.0",
    "ref-napi": "^1.4.3",
    "ref-struct-napi": "^1.1.0",
    "ffi-napi": "^2.4.7"
    
4、調用方法
    1. const ffi = require("ffi-napi");  // 引入ffi
    // `ffi.Library`用於注冊函數,第一個入參為DLL路徑,最好為文件絕對路徑
    
    2. const libm = ffi.Library("./dll/x64/MTScaleAPI/MTScaleAPI.dll", {
          //ExecuteTaskInFile是dll中定義的函數,兩者名稱需要一致
          //[a, [b,c....]] a是函數出參類型,[b,c]是dll函數的入參類型
          ExecuteTaskInFile: ['int', ['object']],
          
       });  // 找到dll文件引入

4、完事試試運行
復制代碼

問題解決

Q:

error msb4019:未找到導入的項目“C:\Program Files (x86 )\MSBuild\
Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Default.props”
復制代碼

A:

// 在命令行執行改命令即可,2017 是你當前vs對應的版本,比如你裝的是2015版本,就改成2015
npm config set msvs_version 2017  
復制代碼

Q:

Uncaught Error: Dynamic Linking Error: Win32 error 126
復制代碼

A:

Dll引用的路徑不對,檢查路徑是否書寫正確,需要用絕對路徑
復制代碼

Q:

Uncaught Error: Dynamic Linking Error: Win32 error 193
復制代碼

A:

dll 位數不對應,例如electron/nodejs是32位的dll是64位的
復制代碼

Q:

Uncaught Error: Dynamic Linking Error: Win32 error 127
復制代碼

A:

DLL中沒有找到對應名稱的函數,需要檢查頭文件定義的函數名是否與DLL調用時寫的函數名是否相同。
Dll錯誤,檢查你的dll文件是否還引用了其他的資源及dll文件
復制代碼

Q:

Uncaught Error: Dynamic Linking Error: Win32 error 1114
復制代碼

A:

dll初始化失敗,一般是在打包成exe文件發生,可能是你的dll在打包后的位置不正確,
程序調用不到就會去系統c盤找對應的dll文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM