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;