请求使用 FFI-NAPI 调用 Dll 库时发现的问题的答案
我很困惑。 使用 FFI-NAPI - Dll 时。 返回值不接收任何东西。 而是在终端打印出内容(stdut)。 我将在下面发布部分代码并继续尝试。我想使用 FF 回调后它会起作用,但我不确定。你能帮我看一下吗?
这是我的代码:
import { myDll } from './utils/DllImport'
....
....
ipcMain.on('GetAdbProp', () => {
var nameBuffer = Buffer.alloc(10240);
nameBuffer.fill(0);
nameBuffer.write('', 0, "ascii");
const res=myDll.GetAdbProp('factory.board', nameBuffer)
console.log(res,nameBuffer)
})
const ffi = require('ffi-napi')
const ref=require('ref-napi')
let path = require('path')
let dllFilePath;
if (process.env.NODE_ENV === 'development') {
dllFilePath = path.join(process.cwd(), './resources/extraResources','AdbHandler.dll')
} else {
dllFilePath = path.join(process.cwd(), './resources/extraResources','AdbHandler.dll')
}
let myDll =ffi.Library(dllFilePath, {
'GetAdbProp':
[
ref.types.bool, ['string','char *'],
],
})
module.exports = {
myDll
}
打印结果:
\platform-tools\adb.exe shell "getprop | grep factory.board"
[factory.board.acclsensor]: [1]
[factory.board.brightness]: [0]
[factory.board.bt]: [1]
[factory.board.charge]: [-1]
[factory.board.cmd]: [0][factory.board.gyrosensor]: [1]
[factory.board.headphone]: [0]
[factory.board.info_check]: [0]
[factory.board.key]: [0]
[factory.board.lcd]: [0]
[factory.board.led]: [0]
[factory.board.mic_hp]: [0]
[factory.board.mic_mic]: [0]
[factory.board.otg]: [0]
[factory.board.psensor]: [0]
[factory.board.sdcard]: [-1]
[factory.board.spk]: [0]
[factory.board.wifi]: [1]
res,nameBuffer
true <Buffer@0x000062140074A800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... 10190 more bytes>
>
const res=myDll.GetAdbProp('factory.board', nameBuffer)
这串代码返回一个空值,并且缓冲区没有改变,但是我的终端有一些东西,
我该如何使用这个打印输出(stduit内容),以下这些。
\platform-tools\adb.exe shell "getprop | grep factory.board"
[factory.board.acclsensor]: [1]
[factory.board.brightness]: [0]
[factory.board.bt]: [1]
[factory.board.charge]: [-1]
.....
....
.....
谢谢
I am confused。
When using FFI-NAPI - Dll 。
The return value does not receive anything。
But print out the content (stdut) at the terminal。
I will post part of the code below and keep trying. I guess it will work after using FF-callback, but I'm not sure. Could you please take a look at it for me 。
Here is my code:
import { myDll } from './utils/DllImport'
....
....
ipcMain.on('GetAdbProp', () => {
var nameBuffer = Buffer.alloc(10240);
nameBuffer.fill(0);
nameBuffer.write('', 0, "ascii");
const res=myDll.GetAdbProp('factory.board', nameBuffer)
console.log(res,nameBuffer)
})
const ffi = require('ffi-napi')
const ref=require('ref-napi')
let path = require('path')
let dllFilePath;
if (process.env.NODE_ENV === 'development') {
dllFilePath = path.join(process.cwd(), './resources/extraResources','AdbHandler.dll')
} else {
dllFilePath = path.join(process.cwd(), './resources/extraResources','AdbHandler.dll')
}
let myDll =ffi.Library(dllFilePath, {
'GetAdbProp':
[
ref.types.bool, ['string','char *'],
],
})
module.exports = {
myDll
}
Print the result :
\platform-tools\adb.exe shell "getprop | grep factory.board"
[factory.board.acclsensor]: [1]
[factory.board.brightness]: [0]
[factory.board.bt]: [1]
[factory.board.charge]: [-1]
[factory.board.cmd]: [0][factory.board.gyrosensor]: [1]
[factory.board.headphone]: [0]
[factory.board.info_check]: [0]
[factory.board.key]: [0]
[factory.board.lcd]: [0]
[factory.board.led]: [0]
[factory.board.mic_hp]: [0]
[factory.board.mic_mic]: [0]
[factory.board.otg]: [0]
[factory.board.psensor]: [0]
[factory.board.sdcard]: [-1]
[factory.board.spk]: [0]
[factory.board.wifi]: [1]
res,nameBuffer
true <Buffer@0x000062140074A800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... 10190 more bytes>
>
const res=myDll.GetAdbProp('factory.board', nameBuffer)
This string of code returns an empty value, and the buffer hasn't changed, but my terminal has something,
How can I use this printout(stduit content),The following these。
\platform-tools\adb.exe shell "getprop | grep factory.board"
[factory.board.acclsensor]: [1]
[factory.board.brightness]: [0]
[factory.board.bt]: [1]
[factory.board.charge]: [-1]
.....
....
.....
thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论