Node-ffi вызывает c DLL, возвращая указатель

Я пытаюсь использовать простой код, чтобы проверить, знаю ли я, что нужно вернуть указатель из C DLL, который будет использоваться в других функциях DLL в качестве параметра. Но что-то не запускается

C DLL-код

#include <stdint.h>

#if defined(WIN32) || defined(_WIN32)
#define EXPORT __declspec(dllexport)
#else
#define EXPORT
#endif


EXPORT int* init() {
    int *p = (int *)calloc(sizeof(int));
    p[0]=33;
    return p;
}


EXPORT int get(int* base) {


  return *base;
}

Код моего приложения узла

var ffi = require('ffi');
var ref = require('ref')


var intPtr = ref.refType('int');

var libm = ffi.Library('./miffi', {
    'init': [ intPtr, [ ] ],
    'get': [ 'int', [  intPtr ] ],
});



var idx = libm.init()
console.log("I get id" )

console.log(libm.get(idx))

Но не показывает первый «console.log», хотя и не показывает никаких ошибок. Если я удалю строку "p[0]=33;" Я вижу первый «console.log», хотя get не запускается.

Большое спасибо


person wakeup    schedule 16.10.2019    source источник


Ответы (1)


Я решил это. я просто забыл добавить

#include <stdlib.h>

Я не видел предупреждения об этом.

person wakeup    schedule 22.10.2019