Can we use "ImportC" used yet?
data pulverizer
data.pulverizer at gmail.com
Fri Oct 22 06:11:35 UTC 2021
On Thursday, 21 October 2021 at 23:06:18 UTC, jfondren wrote:
> On Thursday, 21 October 2021 at 22:23:50 UTC, data pulverizer
> wrote:
> I'd first check that the type names look OK in the processed C.
> If they do, then it's an importc bug. Those are still getting
> reported, but yours might be new. Worth checking out.
I've double-checked and the types names are fine in translated C
file.
> It might also be a bug that's been fixed since release--try dmd
> master on it.
I have the latest compiler installed and I just double-checked by
compiling dmd-master with the same result. The specific error is:
```
Error: function `Rf_allocVector(__tag28, long)` is not callable
using argument types `(int, long)`
cannot pass argument `REALSXP` of type `int` to parameter
`__tag28`
```
Here `__tag28` should be `SEXPTYPE` which is an `enum int`
containing `REALSXP`.
Another (superficial by maybe related) issue is that `REALSXP` is
an `SEXPTYPE` which is an `enum int` under the hood but dmd skips
the `SEXPTYPE` description altogether, even though SEXPTYPE is
correctly converted in the imported C file.
>> Also, with some definitions in the C file, when I try to
>> `#undef` something to get some conditional C definitions to be
>> converted with `gcc -E -P ...`, nothing happens.
>
> d doesn't do any C preprocessing, so any problem here is with
> gcc. Your `#undef`s may be coming before the C preprocessor's
> own `#define`s and have no effect.
I thought I'd ask anyway, it looks like a question for the R
community, where `#undef R_NO_REMAP` in the script has no effect.
This is unrelated to the first issue.
As @Imperatorn said (and I was aware as I asked the question)
this is a new feature that is currently being worked on, and we
should expect and report stuff like this. It's a great feature
and lots of people will use it heavily. Including myself.
More information about the Digitalmars-d-learn
mailing list