Muhammad, your code looks very close to me. Note that I haven't tried this code, but try something like this: https://gist.github.com/TooTallNate/d1f8ee799e9764c0ab18
I've only changed: * The "pointer" argument type to "string" * Don't call `free()` on the passed in char *, V8/node will take care of that for us and we don't want a double-free Let me know if that works for you. Cheers! On Thu, Jul 3, 2014 at 1:36 AM, Muhammad S Maromi <[email protected]> wrote: > Hi Nathan, I want to do is, let's say I have object: > > var obj = {foo:1, bar: 2} > > then pass that object to ffi function. > What is the parameter of function (in C module) should be? > > > Thanks ryan, let me check what'll it goes. > > > On Thursday, July 3, 2014 4:52:56 AM UTC+7, ryandesign wrote: > >> >> On Jul 1, 2014, at 10:18 PM, Muhammad S Maromi wrote: >> >> > I tried the "straightforward" way, but it produces this error: >> > >> > $ node learn.js >> > /Users/msmaromi/learnnode/trenupp/node_modules/ffi/lib/_foreign_function.js:55 >> >> > throw e >> > ^ >> > TypeError: error setting argument 0 - writePointer: Buffer instance >> expected as third argument >> > at Object.writePointer (/Users/msmaromi/learnnode/ >> trenupp/node_modules/ffi/node_modules/ref/lib/ref.js:740:11) >> > at Object.set (/Users/msmaromi/learnnode/ >> trenupp/node_modules/ffi/node_modules/ref/lib/ref.js:482:13) >> > at Object.alloc (/Users/msmaromi/learnnode/ >> trenupp/node_modules/ffi/node_modules/ref/lib/ref.js:514:13) >> > at Object.ForeignFunction.proxy [as tesJson] >> (/Users/msmaromi/learnnode/trenupp/node_modules/ffi/lib/_foreign_function.js:50:22) >> >> > at Object.<anonymous> (/Users/msmaromi/learnnode/trenupp/learn.js:18:9) >> >> > at Module._compile (module.js:456:26) >> > at Object.Module._extensions..js (module.js:474:10) >> > at Module.load (module.js:356:32) >> > at Function.Module._load (module.js:312:12) >> > at Function.Module.runMain (module.js:497:10) >> >> What do you mean exactly when you say "json object"? Do you mean a >> JavaScript object like this: >> >> >> var o = {foo: 5}; >> >> >> Or do you mean a string representation of that object in JavaScript >> object notation (JSON) like this: >> >> >> var j = '{foo: 5}'; >> >> >> For the latter, I would think you could pass the buffer representation of >> the string j to an ffi function. That function would need to know how to >> decode JSON-formatted strings. >> >> For the former, you would need to convert o to JSON first (e.g. using >> JSON.stringify(o)). >> >> -- > 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 [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/nodejs/d1499527-2524-4552-bd14-5465fc1fd894%40googlegroups.com > <https://groups.google.com/d/msgid/nodejs/d1499527-2524-4552-bd14-5465fc1fd894%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- 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 [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/CAN5MXofcP7zLEFJduYJSua%2B9Fgm59XJmKC0bNWA1-jDKg5BNfQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
