char[]/ubyte[] compile error

Jacob Carlborg via digitalmars-d-ldc digitalmars-d-ldc at puremagic.com
Thu Jul 13 02:51:00 PDT 2017


On 2017-07-12 23:14, Damien Gibson wrote:
> Hi all. As I'm sure you all know documentation is hit and miss for if it 
> exists or is good with DLang (And compilers) and this issue i'm not 
> totally sure if either or at this point.
> 
> C++ cooperation with dlls made in dmd was pretty nonexistant from all my 
> previous attempts and LDC works fine.
> 
> However in the case of what i'm currently making it requires the use of 
> a byte array (0-255) and i've tried either char[] or ubyte[] and on 
> either of them the compiler always returned this error:
> 
> 'Error: Internal Compiler Error: unsupported type char[]'
> 
> a direct method of reproducing this is:
> 
> 1) Make a shared library(dll).
> 2) Generate in some code file - Module Name,
>                                  export:extern(C++):,
>                                  use above type as return or param;
> 3) Compile.
> 
> I haven't had any luck finding documentation as to why this may be or 
> what it extends to if it isnt just arrays of those types nor do I have 
> any luck finding alternative methods to accomplish the same tasks those 
> 2 known types are required for.
> 
> What I would like help for basicly is just to find out if maybe there is 
> limited usage in there and what alternative approach someone else may 
> have to the arrays. Thanks.

Perhaps you can declare a struct that contains a pointer and the length 
of the array. This is the internal representation of an array in D [1]. 
The struct would look like:

Array
{
     size_t length;
     char* ptr;
}

[1] http://dlang.org/spec/abi.html#arrays

-- 
/Jacob Carlborg


More information about the digitalmars-d-ldc mailing list