Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

283
Visualizações
¿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
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda