2017-01-26 10 views
1

노드 ffi 모듈을 사용하여 자체 dll에있는 기본 Windows 함수를 호출합니다. 내 dll은 같은 디렉터리에있는 다른 제 3 자 dll에 따라 다릅니다.노드 ffi를 사용하여 setDllDirectory를 호출하는 중

문제는 그들이 같은 디렉토리에 비록 MYLIBRARY가 의존하는 타사 DLL을 찾을 수 없습니다

var myfunc = ffi.Library("myLibrary", {"test":["string",["string"]]}) 

를 호출 할 때로드 한 후 DLL이 나에게 언급한다는 것입니다. 나는이 행을하기 전에 setDllDirectory를 호출하려고 시도했다 :

var setdl = ffi.Library("kernel32", {'SetDllDirectory':["bool",["string"]]}) 

그리고 나서 setdl을 호출한다. 하지만 그 자체의 setdl 줄에 오류가 발생합니다.

Uncaught Error: Dynamic Symbol Retrieval Error: Win32 error 127(…) 

어떻게 해결할 수 있습니까?

답변

4

오류 127은 ERROR_PROC_NOT_FOUND ("지정된 절차를 찾을 수 없습니다")입니다. ANSI에 대한

  • SetDllDirectoryA :

    SetDllDirectory() 기능의 두 가지 버전이 있습니다.

  • SetDllDirectoryW (유니 코드)

DLL은 실제 이름이 SetDllDirectory() 인 DLL을 내 보내지 않으므로 오류가 발생합니다. 대신 다른 두 개의 함수를 내 보냅니다.

이 정보는 documentation에 명시되어

image