2017-01-26 7 views
0

Самый простой пример в узел иностранных функций интерфейса зовёт atoi загрузив ее из собственного процесса узла:Dynamic Symbol индексирование Ошибка: Ошибка Win32 127 - даже при импорте самостоятельного процесса

var ffi = require('ffi'); 

var current = ffi.Library(null, { 
    'atoi': [ 'int', [ 'string' ] ] 
}); 
console.log(typeof current.atoi('1234')); // 1234 

Но я получаю эту ошибку:

throw new Error('Dynamic Symbol Retrieval Error: ' + this.error()) 
    ^

Error: Dynamic Symbol Retrieval Error: Win32 error 127 
    at DynamicLibrary.get (D:\web\node_modules\ffi\lib\dynamic_library.js:112:11) 
    at D:\web\node_modules\ffi\lib\library.js:50:19 
    at Array.forEach (native) 
    at Object.Library (D:\web\node_modules\ffi\lib\library.js:47:28) 
    at Object.<anonymous> (D:\web\native\winapi.js:5:19) 
    at Module._compile (module.js:541:32) 
    at Object.Module._extensions..js (module.js:550:10) 
    at Module.load (module.js:458:32) 
    at tryModuleLoad (module.js:417:12) 
    at Function.Module._load (module.js:409:3) 

Очевидно, что это не может быть связано с 32/64-битной несовместимостью, так как я обращаюсь к своему собственному процессу. Так в чем же дело?

  • Платформа: Windows 7х64
  • Node: v6.2.2
  • FFI: 2.2.0
  • ссылка: 1.3.3

ответ

0

Первые пары в ffi.library должны быть имя dll, которое вы пытаетесь загрузить, ошибка, с которой вы столкнулись, связана с отсутствующим символом.

+0

Согласно документам, передача null означает, что вы связываете функции с вашим собственным процессом. –

+0

Эта ошибка также может относиться к вызову 32-битного символа, особенно если вы не загружаете библиотеку самостоятельно. –

+0

Конечно, но я предположил, что загрузка символов из текущего исполняемого двоичного файла не должна приводить к конфликту x64 и x32. Это написано в вопросе кстати. –

Смежные вопросы