Problems linking C and D code

torhu no at spam.invalid
Sat Oct 24 21:36:20 PDT 2009


On 24.10.2009 16:17, Jan Stępień wrote:
> On Sat, 24 Oct 2009 15:56:05 +0200
> torhu<no at spam.invalid>  wrote:
>>  On 24.10.2009 15:02, Jan Stępień wrote:
>>  >  Hi all,
>>  >
>>  >  I've got a problem with linking two object files on Windows with an
>>  >  external *.lib file. First one is compiled C code, second one is in D.
>>  >  I'm using D2.
>>  >
>>  >     $ dmc -c first.c -I path/to/SDL/include
>>  >     $ dmd -c second.d
>>  >
>>  >  First two commands create two *.obj file. After running
>>  >
>>  >     $ dmd first.obj second.obj path/to/SDL.lib -ofout.exe
>>  >
>>  >  no "out.exe" file is created but the command returns 0. An "out.map"
>>  >  file is created, though. Where am I doing something wrong?
>>  >
>>  >  Cheers,
>>
>>  Make sure there's a D main function define somewhere.  With SDL you're
>>  probably supposed to link with SDLmain.lib.
>
> Thanks for the reply.
>
> There is int main(string[] args) function in second.d. I tried linking
> in both combinations, with SDLmain.lib only and with both SDL.lib and
> SDLmain.lib - results are the same, unfortunately.
>
> I also tried linking with SDL.dll instead of SDL.lib, but dmd exited
> with a message "unrecognized file extension dll".
>
> Cheers,

The Derelict project has D bindings for SDL, and seems to be a popular 
choice.

http://www.dsource.org/projects/derelict

Other than that, maybe out.exe is a special file name for the linker, or 
something.  You could try another name, just in case.


More information about the Digitalmars-d-learn mailing list