Compile a shared library

bitwise via Digitalmars-d digitalmars-d at puremagic.com
Mon Apr 11 14:23:35 PDT 2016


On Sunday, 10 April 2016 at 05:34:24 UTC, Nafees wrote:
> I am trying to create a shared library, I just tried to compile 
> the code that Mono-D generates for an empty shared library. I 
> tried to compile it, but there were errors, and this is what 
> the compile log said:
> <code>
> Building Solution: QScr (Debug)
>
> Building: QScr (Debug)
> Performing main compilation...
> Current dictionary: /home/nafees/Desktop/Projects/QScr/QScr
> dmd -debug -gc "myclass.d" "dllmain.d"  "-I/usr/include/dmd" 
> "-L/IMPLIB:/home/nafees/Desktop/Projects/QScr/QScr/bin/Debug/libQScr.a" "-odobj/Debug" "-of/home/nafees/Desktop/Projects/QScr/QScr/bin/Debug/libQScr.so" -w -vcolumns
> /usr/bin/ld: cannot find 
> /IMPLIB:/home/nafees/Desktop/Projects/QScr/QScr/bin/Debug/libQScr.a: No such file or directory
> collect2: error: ld returned 1 exit status
> --- errorlevel 1
> Exit code 1
> Build complete -- 1 error, 0 warnings
>
> ---------------------- Done ----------------------
>
> Build: 1 error, 0 warnings
> </code>
>
> see, there is that .a file missing, I've no idea what it is. 
> And I'm using DMD2 on Linux (Ubuntu 14.04). Any ideas how can I 
> compile it?

IMPLIB is a linker flag for windows. Its possible that Mono-D is 
not correctly identifying the OS for some code paths. I would 
file a bug on github/mono-d.

As far as dmd goes though, shared library support is spotty at 
the moment. AFAIK, shared libraries should work on linux, but I 
haven't tried it myself. It may be a good idea to try and build 
one manually to confirm.

    Bit


More information about the Digitalmars-d mailing list