Hmmm ... I've created a header file named SDR.h, which is found by default. (That is, it's in a directory that is automatically searched.)
That file contains (for simplicity) the following:
struct rtlsdr_dev {
int x;
double d;
};
Then I create an Inline::C script:
use strict;
use warnings;
use Inline C =><<'EOC';
#include <SDR.h>
void baz() {
struct rtlsdr_dev mine;
mine.x = 1032;
mine.d = sqrt(2.0);
printf("%d %.16e\n", mine.x, mine.d);
}
EOC
baz();
When I run that script, it outputs (as expected):
1032 1.4142135623730951e+00
Given that Inline::C is nothing more than a module that autogenerates an XS file, then compiles and runs that XS code, I'm wondering what the difficulty is.
Is it that you want to avoid naming the struct (to, eg, "mine", as I did) ? If so, why is such a restriction being imposed ?
Or is there some other problem ?
Cheers,
Rob | [reply] [d/l] [select] |
| [reply] |
I was asking OP to show us how he's handling the struct because I believe they aren't doing it correctly. Personally, I'm fully aware myself of how it all hangs together, having authored several XS distributions that includes their own C code, as well as external library wrappers.
| [reply] |
Oops - that was meant as a reply to the OP, not to you!
Dave.
| [reply] |
Your question is unclear. What exactly do you mean by "import automatically it in my XS"?
Dave. | [reply] |
it means that if I have my XS code,
including the SDR header, how can I access the various struct elements?
regards
| [reply] |
Are you talking about accessing the struct elements from within XS code, or from within perl code?
Dave.
| [reply] |
Please show us an example of how you'd like to use the struct. Providing us just the definition leaves your question ambiguous and very unclear.
| [reply] |