2017-01-26 11 views
0
노드 외부 기능 인터페이스의 가장 기본적인 예는 노드의 자체 프로세스에서로드하여 atoi를 호출

:하지만동적 기호 검색 오류 : 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 비트 비 호환성과 관련 될 수 없습니다. 정확히 무엇이 잘못 되었나요?

  • 플랫폼 : 윈도우 7x64는
  • 노드 : v6.2.2
  • FFI : 2.2.0는
  • 심판 : 1.3.3는

답변

0

ffi.library의 첫 번째 PARAM이 있어야 로드하려는 DLL의 이름입니다. 발생한 오류는 누락 된 기호와 관련이 있습니다.

+0

문서에 따르면 null을 전달하면 자신의 프로세스에서 함수를 연결한다는 의미입니다. –

+0

이 오류는 특히 라이브러리를 직접로드하지 않은 경우 32 비트 심볼을 호출하는 것과 관련 될 수 있습니다. –

+0

물론,하지만 현재 실행중인 바이너리에서 기호를로드하면 x64와 x32 충돌이 발생하지 않아야한다고 가정했습니다. 그것은 btw라는 질문에 쓰여 있습니다. –