Node.js는 JavaScript로 구성된 애플리케이션을 작성하는 데 사용됩니다. 그러나 때로는 JavaScript로 구현하기 어려운 작업이 필요하고 이 때 C/C++ 코드를 사용해야 합니다. 이런 경우에 Node.js에서 C/C++ 코드를 호출하고 결과를 처리하는 방법에 대해 알아보겠습니다.
ffi-napi란?
ffi-napi는 Node.js에서 C/C++ 코드를 호출하고 상호작용하기 위한 모듈 중 하나입니다. ffi-napi는 Foreign Function Interface(FGI) 라이브러리로, Node.js의 네이티브 C++ 모듈을 사용하지 않고도 C/C++ 함수를 호출할 수 있습니다.
ffi-napi는 모든 운영 체제에서 작동하며, Node.js의 최신 버전에서도 지원됩니다. ffi-napi를 사용하면 C/C++ 코드를 호출하고 결과를 Node.js 애플리케이션으로 가져올 수 있으므로 Node.js 애플리케이션을 더욱 확장 가능하고 유연하게 만들 수 있습니다.
ffi-napi를 사용한 C/C++ 함수 호출하기
ffi-napi를 사용하여 C/C++ 함수를 호출하려면 먼저 ffi-napi 모듈을 설치해야 합니다. 다음 명령어를 사용하여 ffi-napi 모듈을 설치할 수 있습니다.
npm install ffi-napi
ffi-napi 모듈을 설치한 후에는 다음과 같이 C/C++ 함수를 호출할 수 있습니다.
const ffi = require("ffi-napi");
// DLL 파일의 경로와 함수 이름을 지정합니다.
const dll = ffi.Library("mydll.dll", {
"add": ["int", ["int", "int"]],
});
// C/C++ 함수를 호출합니다.
const result = dll.add(1, 2);
console.log(result); // 3
위 예제에서는 "mydll.dll" DLL 파일의 "add" 함수를 호출합니다. "add" 함수는 두 개의 정수를 매개변수로 받아서 더한 값을 반환합니다. ffi-napi를 사용하여 "add" 함수를 호출하면 반환값인 3을 출력할 수 있습니다.
결론
ffi-napi를 사용하면 Node.js에서 C/C++ 코드를 호출하고 결과를 처리할 수 있습니다. ffi-napi를 사용하면 Node.js 애플리케이션을 더욱 확장 가능하고 유연하게 만들 수 있습니다. 위 예제를 참고하여 ffi-napi를 사용하여 C/C++ 코드를 호출해 보시기 바랍니다.
추가사항 - 프로젝트 소스
소스를 요청하시는 분들이 계셔서 node.js, C++프로젝트 파일 올려드립니다.
개발환경은 아래와 같습니다. 개발환경이 다른경우 프로젝트 파일을 변경 후 사용하세요.
- 시스템: Windows 10 64비트
- node.js: v18.13.0
- Visual Studio 2019: v16.11.7
node.js프로젝트 안에는 64비트로 컴파일된 mydll.dll이 들어가 있습니다.
Node.js 프로젝트
Visual Studio C++ DLL 프로젝트
댓글