digitalmars.D - Can you create a library with LDC and link to it with clang++?
- Ruby The Roobster (16/16) Sep 23 2020 Can you create a library(.lib) with ldc and port it to clang++?
- Manu (5/21) Sep 23 2020 Of course. This is critically important functionality for many users.
- 12345swordy (4/28) Sep 23 2020 If we want a good mass adoption rate then we should aim for
- Ruby The Roobster (2/4) Sep 23 2020 Thanks.
- Manu (11/15) Sep 24 2020 Remember that if you're linking with Clang, it won't automatically link ...
Can you create a library(.lib) with ldc and port it to clang++? e.g. //test.d module test; import std.stdio; void hi() { writeln("hello"); } //test.cpp(links to test.lib which contains test.hi #include <iostream> extern "D" void hi(); void main() { hi(); } //Hopefully prints "hi"
Sep 23 2020
On Thu, Sep 24, 2020 at 9:35 AM Ruby The Roobster via Digitalmars-d < digitalmars-d puremagic.com> wrote:Can you create a library(.lib) with ldc and port it to clang++? e.g. //test.d module test; import std.stdio; void hi() { writeln("hello"); } //test.cpp(links to test.lib which contains test.hi #include <iostream> extern "D" void hi(); void main() { hi(); } //Hopefully prints "hi"Of course. This is critically important functionality for many users. Except, you should use `extern(C++)` in your D code, and no need to extern in your C++ code.
Sep 23 2020
On Wednesday, 23 September 2020 at 23:45:38 UTC, Manu wrote:On Thu, Sep 24, 2020 at 9:35 AM Ruby The Roobster via Digitalmars-d < digitalmars-d puremagic.com> wrote:If we want a good mass adoption rate then we should aim for importing c header files c99 edition. -AlexCan you create a library(.lib) with ldc and port it to clang++? e.g. //test.d module test; import std.stdio; void hi() { writeln("hello"); } //test.cpp(links to test.lib which contains test.hi #include <iostream> extern "D" void hi(); void main() { hi(); } //Hopefully prints "hi"Of course. This is critically important functionality for many users. Except, you should use `extern(C++)` in your D code, and no need to extern in your C++ code.
Sep 23 2020
On Wednesday, 23 September 2020 at 23:45:38 UTC, Manu wrote:Except, you should use `extern(C++)` in your D code, and no need to extern in your C++ code.Thanks.
Sep 23 2020
Remember that if you're linking with Clang, it won't automatically link the druntime library because it assumes it's linking a C++ program. Make sure you add the D libraries to your link command if you intend to use the D runtime library. Also, if your main function is in C++ like you show, then you need to init and term the D runtime library: https://dlang.org/phobos/rt_dmain2.html#.rt_init ... Call those those at the start/end of your main function since C++'s startup/main won't do it for you. On Thu, Sep 24, 2020 at 10:30 AM Ruby The Roobster via Digitalmars-d < digitalmars-d puremagic.com> wrote:On Wednesday, 23 September 2020 at 23:45:38 UTC, Manu wrote:Except, you should use `extern(C++)` in your D code, and no need to extern in your C++ code.Thanks.
Sep 24 2020