Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

272
Views
¿Hay una manera fácil en NodeJS de llamar a funciones desde una API de terceros que usa tipos de datos personalizados?

Actualmente estoy importando C++ .dll usando ffi-napi llamando directamente a las funciones en NodeJS, pero me obliga a definir todos los tipos de datos personalizados en NodeJS si quiero pasarlos como argumentos de función.

Estoy buscando un método alternativo para llamar a funciones desde un C++ .dll que use tipos de datos personalizados o un enfoque diferente con ffi-napi.

A continuación se muestra mi implementación actual usando ffi-napi:

Encabezado C++:

 Enum1 some_function ( Enum2 var1, Struct1* var2, Struct1* var3, Enum3* var4); );

NodoJS:

 var ref = require('ref-napi'); var ffi = require('ffi-napi'); var Struct = require('ref-struct-napi'); var Enum = require('enum') var Union = require('ref-union-napi') var somelib = new ffi.Library("somedll.dll", { "some_function": [ Enum1, [Enum2, Struct1*, Struct1*, Enum3*] // ignore correctness for simplicity ]});

Puedo definir los tipos de datos personalizados (Enum1, Struct1, Enum3, etc.) en NodeJS usando los módulos que se muestran arriba, ya que NodeJS no los admite de forma nativa. Incluso usando ref.refType(Type) para obtener punteros.

La dificultad es que estos tipos de Struct se pueden anidar. Por ejemplo, se define Struct1 en el encabezado de C++:

 typedef struct Struct1 { Struct2 var1; Struct3 var2; Struct4 var3; };

Struct1 tiene otras 3 Structs dentro. Solo mostraré cómo se define Struct4 en el encabezado de C++:

 typedef struct Struct4 { Enum4 var1; Struct5 var2; Struct6 var3; union { Struct7* var4; Struct8* var5; Struct9* var6; Struct10* var7; };

Estas estructuras también pueden contener algunos otros tipos de datos.

Cuando necesite llamar a alguna_función, tendré que pasar variables de los respectivos tipos de datos de argumento

 somelib.some_function(Enum2Var, &Struct1Var1, &Struct1Var2, &Enum3Var); // ignore correctness for simplicity

Me pregunto si existe una mejor implementación que tener que definir manualmente todos estos tipos de datos en NodeJS para usar correctamente estas funciones.

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!