| Thread overview | ||||||||
|---|---|---|---|---|---|---|---|---|
|
April 25, 2012 Help with C struct by value on OSX 64bits | ||||
|---|---|---|---|---|
| ||||
Hi. I'm having trouble calling a C function passing a structure by value, printing a member and getting it back in D but I must be doing something wrong.
I have a C file called native.c that defines a function called 'filter' taking a buf_t structure, I compile it using GCC to native.o. From D, I use extern(C) to access the 'filter' function defined in native.o.
##Makefile
app: native.o
dmd -ofbin/app app.d native.o
chmod +x bin/app
bin/./app
native.o: native.c
gcc -c native.c -o native.o
##app.d
import std.stdio;
extern(C) struct buf_t {
void* base;
size_t len;
}
extern(C) buf_t filter(const buf_t value);
void main() {
buf_t buf;
buf.len = 10;
auto r = filter(buf);
writefln("D: len %d", r.len);
}
***native.c***
#include <sys/types.h>
#include <stdio.h>
typedef struct {
void* base;
size_t len;
} buf_t;
buf_t filter(buf_t value) {
printf("C: len: %zu\n", value.len);
return value;
}
***The output***
C: len: 140734905718328
D: len 0
"len" should be 10 in both cases. What am I doing wrong?
I'm using:
OS: Mac OSX Lion, 64bits.
D compiler: DMD64 D Compiler v2.058
C compiler: gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)
Thanks,
Johan
| ||||
April 25, 2012 Re: Help with C struct by value on OSX 64bits | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Johan Hernandez | On Wed, 25 Apr 2012 09:57:39 +0200, Johan Hernandez <thepumpkin1979@gmail.com> wrote: > Hi. I'm having trouble calling a C function passing a structure by value, printing a member and getting it back in D but I must be doing something wrong. Could be this one: http://d.puremagic.com/issues/show_bug.cgi?id=5570 | |||
April 25, 2012 Re: Help with C struct by value on OSX 64bits | ||||
|---|---|---|---|---|
| ||||
Posted in reply to simendsjo | On Wednesday, 25 April 2012 at 08:38:02 UTC, simendsjo wrote:
> Could be this one: http://d.puremagic.com/issues/show_bug.cgi?id=5570
Thank you for your response.
It's a huge issue :(
| |||
April 25, 2012 Re: Help with C struct by value on OSX 64bits | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Johan Hernandez | On Wed, 25 Apr 2012 20:36:31 +0200, Johan Hernandez <thepumpkin1979@gmail.com> wrote:
> On Wednesday, 25 April 2012 at 08:38:02 UTC, simendsjo wrote:
>> Could be this one: http://d.puremagic.com/issues/show_bug.cgi?id=5570
>
> Thank you for your response.
>
> It's a huge issue :(
I agree. Let's hope it gets fixed now that it's confirmed on OSX too.
You could use the voting system in bugzilla to give the issue more focus.
| |||
April 25, 2012 Re: Help with C struct by value on OSX 64bits | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Johan Hernandez | On 2012-04-25 20:36, Johan Hernandez wrote: > On Wednesday, 25 April 2012 at 08:38:02 UTC, simendsjo wrote: >> Could be this one: http://d.puremagic.com/issues/show_bug.cgi?id=5570 > > Thank you for your response. > > It's a huge issue :( Compile as a 32bit binary. For DMD add "-m32" do the flags. For gcc add "-arch i386". -- /Jacob Carlborg | |||
April 26, 2012 Re: Help with C struct by value on OSX 64bits | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Jacob Carlborg | On Wednesday, 25 April 2012 at 19:43:27 UTC, Jacob Carlborg wrote:
> Compile as a 32bit binary. For DMD add "-m32" do the flags. For gcc add "-arch i386".
Thanks Jacob, that worked!!!
simendsjo:
I upvoted and commented the same day bro.
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply