Hi Nathan, thank you for your answer!!!

I have modified my code:

var ffi = require('ffi');var ref = require('ref');var StructType = 
require('ref-struct');

var fixedString = require('ref-fixed-string');


var TINData = new StructType({
      'Value': 'string',
      'Type': 'string',
      'Id': 'int',
      'Parity': 'string'});


var TINDataPtr = ref.refType(TINData);
var TOUTData = new StructType({
      'Cash': 'string',
      'Telephone': 'string',
      'CallType': 'string',
      'CallResult': 'string',
      'Description': 'string'});

var TOUTDataPtr = ref.refType(TOUTData);

var mylibrary = ffi.Library('OurLib.dll', { 'Open' : ['void', ['string']], 
'Execute' : ['void', [TINDataPtr, TOUTDataPtr ]],
'Close' : ['void', ['void']] }); myLibrary.Open('myConnection'); var 
myTINData = new TINData(); myTINData.Value = '00000010'; myTINData.Type = 
'1'; myTINData.Id = 123; myTINData.Parity = '0';

var myTOUTData = new TOUTData();
var i = mylibrary.Execute(myTINData.ref(), myTOUTData.ref());

    myLibrary.Close();

var pOutputData = myTOUTData.ref();


Now the debug file is filled correctly, but I get this error "Malloced 
operator new Allocation failed - process out of memory" in the Execute 
method call. Maybe I haven't enough memory for nodejs execution?

Thank you
Leo

Il giorno venerdì 25 settembre 2015 02:40:37 UTC+2, Nathan Rajlich ha 
scritto:
>
> Rather than using "string" type for those fixed-length strings, use this 
> little Type that I whipped up (FixedString: 
> https://gist.github.com/TooTallNate/0fe04681493a3c32da51). That way, the 
> resulting struct size/alignment will match what it would be in C.
>
> On top of that, you're going to need to pass in a reference to the TINData 
> and TOUTData structs. The way you have it defined right now you're passing 
> the structs in by value, which is wrong. So do `var TINDataPtr = 
> ref.refType(TINDataPtr);` and use that for the first argument. Do the same 
> thing for the OUT one. And then instead of passing myTINData directly in, 
> you would call `myTINData.ref()` to pass a pointer to the struct rather 
> than the value.
>
> Hope that helps. Cheers!
>
> On Thursday, September 24, 2015 at 8:24:08 AM UTC-7, Leopoldo Belmonte 
> wrote:
>>
>> Could anyone help me to solve a problem with nodejs and C library (call 
>> to some dll methods)?
>>
>>
>> My dll have these methods:
>>
>> void Open(char *Path);int Execute(TINData *InData,TOUData *OutData);void 
>> Close(void);
>>
>> with these data structures:
>>
>> typedef struct {
>>       char Value[8+1];
>>       char Type [1+1];
>>       int Id;
>>       unsigned char Parity;} TINData
>> typedef struct {
>>       char Cash[8+1];
>>       char Telephone[11+1];
>>       char CallType[3+1];
>>       char CallResult[2+1];
>>       char Description[24+1];} TOUTData
>>
>> My nodejs code:
>>
>> var ffi = require('ffi');var ref = require('ref');var StructType = 
>> require('ref-struct');
>>
>>
>> var TINData = StructType({
>>       'Value': 'string',
>>       'Type': 'string',
>>       'Id': 'int',
>>       'Parity': 'string'});
>> var TOUTData = StructType({
>>       'Cash': 'string',
>>       'Telephone': 'string',
>>       'CallType': 'string',
>>       'CallResult': 'string',
>>       'Description': 'string'});
>>
>>
>>
>> var mylibrary = ffi.Library('OurLib.dll', {
>>       'Open' : ['void', ['string']],
>>       'Execute' : ['void', [TINData, TOUTData]],
>>       'Close' : ['void', ['void']]});
>>
>> myLibrary.Open('myConnection');
>> var myTINData = new TINData();           
>> myTINData.Value = '00000010';
>> myTINData.Type = '1';
>> myTINData.Id = 123;
>> myTINData.Parity = '0';
>>
>>

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nodejs+unsubscr...@googlegroups.com.
To post to this group, send email to nodejs@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/5320263c-0f36-4322-b95f-6cbc2d0cec85%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to