Using a C function with command line parameters

Steven Schveighoffer schveiguy at yahoo.com
Mon Jul 4 07:41:28 PDT 2011


On Mon, 04 Jul 2011 10:39:07 -0400, Steven Schveighoffer  
<schveiguy at yahoo.com> wrote:

> On Mon, 04 Jul 2011 10:31:58 -0400, Jonathan Sternberg  
> <jonathansternberg at gmail.com> wrote:
>
>> glut has the function:
>>
>>     void glutInit( int* pargc, char** argv );
>>
>> In order to use it. Since D has an ABI compatible with C, I should be  
>> able to
>> write a D file with extern (C) on the glut functions. How would I wrap  
>> this
>> function to be used with D arrays? Such as:
>>
>> int main(string[] args)
>> {
>>     glutInit( /* I don't know what to do here */ );
>>     return 0;
>> }
>>
>> Thanks.
>
> Convert all the args to zero-terminated strings.  One thing to look at,  
> does glutInit actually modify any of the strings or does it just remove  
> them from the argv array?  Because I would expect the argv argument to  
> be const(char)** if it doesn't modify.  That would allow you to pass in  
> the strings without having to duplicate them.
>
> Some untested code:
>
> auto argarr = new immutable(char)*[args.length];

bleh, this should have been new char*[args.length];

Sorry.

-Steve


More information about the Digitalmars-d-learn mailing list