Interop with C++ library - what toolchain do you use?
Cliff via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Sep 18 09:35:07 PDT 2014
On Thursday, 18 September 2014 at 08:27:07 UTC, Szymon Gatner
wrote:
> On Wednesday, 17 September 2014 at 22:28:44 UTC, Cliff wrote:
>> So I am trying to use a C++ library with D. My toolchain is
>> currently Visual Studio 2013 with Visual D, using the DMD
>> compiler. When trying to link, I obviously ran into the OMF
>> vs.
>> COFF issue, which makes using the C++ library a bit of a trial
>> to
>> say the least (I played around with some lib format converters
>> but perhaps unsurprisingly this led to somewhat unpredictable
>> behavior.) I'd like to fix up my toolchain to avoid having
>> this
>> issue.
>>
>> For those of you who are on Windows and who do D and C++
>> interop,
>> what toolchain have you had success with?
>>
>> Additionally, I have heard tell that D now allows calling C++
>> non-virtual class methods but I have not found documentation on
>> how to make this work (how do I define the C++ class layout in
>> D
>> - I know how to do it for vtable entries but not non-virtual
>> methods.) Pointers to docs or samples would be much
>> appreciated.
>>
>> Thanks!
>
> I am using Visual Studio 2012 (in x64 bit mode that is).
>
> Binary D distribution also comes with phobos64.lib that C++
> executable has to link. With VisualD plugin you can just add D
> static library project to the solution and the link C++ exe to
> it. It is very easy to make back-and-forth function calls
> between C++/D. I recommend Adam Ruppe's excellent "D Cookbook"
> Integration chapter on the details on how to expose this for
> cross-lang usage.
>
> It does not all work correctly tho. I reported my issues on
> "learn" subforum but didn't get much help. In short: it seems
> not everything in D run-time (Phobos) gets properly initialized
> even after successful rt_init() call. In my case simple call to
> writeln() causes a crash because stdout is not properly
> initialized on D'd side.
>
> Happy hybridizing!
Thanks guys. I do have that book, but I was unaware of the COFF
capabilities of the 64-bit DMD, I'll take a look at it.
More information about the Digitalmars-d-learn
mailing list