www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Add a precompiled c++ obj file to dub

reply Fra Mecca <me francescomecca.eu> writes:
Hi all,
I am writing a backend that is partly Vibe.d and partly clucene 
in c++.
I have some object files written in c++ and compiled with g++ 
that are not considered by dub during the linking phase and 
throws `function undefined error ` every time.

Is there a way to tell dub to let dmd handle that .o files?
Oct 07
parent reply user1234 <user1234 12.ie> writes:
On Saturday, 7 October 2017 at 19:56:52 UTC, Fra Mecca wrote:
 Hi all,
 I am writing a backend that is partly Vibe.d and partly clucene 
 in c++.
 I have some object files written in c++ and compiled with g++ 
 that are not considered by dub during the linking phase and 
 throws `function undefined error ` every time.

 Is there a way to tell dub to let dmd handle that .o files?
Yes, add this to your JSON: "sourceFiles-linux-x86_64" : [ "somepath/yourobject.o" ],
Oct 07
parent reply Fra Mecca <me francescomecca.eu> writes:
On Saturday, 7 October 2017 at 23:54:50 UTC, user1234 wrote:
 On Saturday, 7 October 2017 at 19:56:52 UTC, Fra Mecca wrote:
 Hi all,
 I am writing a backend that is partly Vibe.d and partly 
 clucene in c++.
 I have some object files written in c++ and compiled with g++ 
 that are not considered by dub during the linking phase and 
 throws `function undefined error ` every time.

 Is there a way to tell dub to let dmd handle that .o files?
Yes, add this to your JSON: "sourceFiles-linux-x86_64" : [ "somepath/yourobject.o" ],
I tried the sourceFiles approach, it failed and I could reproduce that in some days. At the end I added them as linking options (lflags) but it is kinda odd that it works given that everything is supplied to dmd as -Lobj.o
Oct 07
next sibling parent reply user1234 <user1234 12.ie> writes:
On Sunday, 8 October 2017 at 02:58:36 UTC, Fra Mecca wrote:
 On Saturday, 7 October 2017 at 23:54:50 UTC, user1234 wrote:
 On Saturday, 7 October 2017 at 19:56:52 UTC, Fra Mecca wrote:
 Hi all,
 I am writing a backend that is partly Vibe.d and partly 
 clucene in c++.
 I have some object files written in c++ and compiled with g++ 
 that are not considered by dub during the linking phase and 
 throws `function undefined error ` every time.

 Is there a way to tell dub to let dmd handle that .o files?
Yes, add this to your JSON: "sourceFiles-linux-x86_64" : [ "somepath/yourobject.o" ],
I tried the sourceFiles approach, it failed and I could reproduce that in some days. At the end I added them as linking options (lflags) but it is kinda odd that it works given that everything is supplied to dmd as -Lobj.o
Huh, i'm surprised but well, if it works for you. My advice was based on https://github.com/BBasile/dbeaengine/blob/master/dub.json (object file is passed to dmd) which works, I often use it.
Oct 07
parent b4s1L3 <b2.temp gmx.com> writes:
On Sunday, 8 October 2017 at 04:03:27 UTC, user1234 wrote:
 On Sunday, 8 October 2017 at 02:58:36 UTC, Fra Mecca wrote:
 On Saturday, 7 October 2017 at 23:54:50 UTC, user1234 wrote:
 On Saturday, 7 October 2017 at 19:56:52 UTC, Fra Mecca wrote:
 Hi all,
 I am writing a backend that is partly Vibe.d and partly 
 clucene in c++.
 I have some object files written in c++ and compiled with 
 g++ that are not considered by dub during the linking phase 
 and throws `function undefined error ` every time.

 Is there a way to tell dub to let dmd handle that .o files?
Yes, add this to your JSON: "sourceFiles-linux-x86_64" : [ "somepath/yourobject.o" ],
I tried the sourceFiles approach, it failed and I could reproduce that in some days. At the end I added them as linking options (lflags) but it is kinda odd that it works given that everything is supplied to dmd as -Lobj.o
Huh, i'm surprised but well, if it works for you. My advice was based on https://github.com/BBasile/dbeaengine/blob/master/dub.json (object file is passed to dmd) which works, I often use it.
Yeah that's becuz passing *.o / *.obj files to the linker or to dmd is the same buisness under the hood. The problem with this DUB project is that it will only compiles with DMD. Maybe the OP used another compiler. other compilers may not support the shortcut here: https://github.com/dlang/dmd/blob/master/src/ddmd/mars.d#L626
Oct 09
prev sibling parent Jacob Carlborg <doob me.com> writes:
On 2017-10-08 04:58, Fra Mecca wrote:

 At the end I added them as linking options (lflags) but it is kinda odd 
 that it works given that everything is supplied to dmd as -Lobj.o
Everything passed to DMD with the -L flag is passed to the linker, basically as is. So if the linker accepts object files passed directly on the command line then it works. -- /Jacob Carlborg
Oct 09