1.NodeDCMTK.dll project에 Test용 함수 추가
///header file int test_dcmtk(int a, int b); ///cpp file int test_dcmtk(int a, int b) { return a + b; }
2. ffi 사용을 위해 webpack이 수행되는 index.js에는 require(‘ffi’)를 추가 할 수 없기에 index.html에 ffi
, ref
를 미리 선언
<script type="text/javascript"> var ffi = require('./JS/node_modules/ffi'); var ref = require('./JS/node_modules/ref'); </script> <script type="text/javascript" src="build/bundle.js"></script>
3.index.html에 ffi를 사용하여 nodeDCMTK 함수 선언
// binding to a nodeDCMTK functions... var nodeDCMTK = ffi.Library('E:\\work\\DICOMViewer\\NodeDCMTK\\Release\\NodeDCMTK.dll', { 'test_dcmtk': [ 'int', [ 'int', 'int' ]] });
4.해당 nodeDCMTK를 이용하여 함수 call
var result = nodeDCMTK.test_dcmtk(3,4); console.log(result);
5.결과화면
6.추가로 dll path를 손쉽게 접근 하기 위해 environment의 PATH에 원하는 PATH를 추가 후 다시 원상 복구
설정하고자 하는 PATH는 electron.exe가 실행되는 위차가 기준
var oldPath = process.env.PATH; ///현재 path 기준은 electron.exe var dllPath = '..\\Release'; process.env['PATH'] = `${process.env.PATH};${dllPath}`; // binding to a nodeDCMTK functions... var nodeDCMTK = ffi.Library('NodeDCMTK.dll', { 'test_dcmtk': [ 'int', [ 'int', 'int' ]] }); process.env['PATH'] = oldPath;