How can I execute C++ functions from Dlang?
thePengüin
arcanet192 at gmail.com
Sat Aug 19 20:50:23 UTC 2023
On Saturday, 19 August 2023 at 20:16:47 UTC, Ferhat Kurtulmuş
wrote:
> On Saturday, 19 August 2023 at 19:41:47 UTC, thePengüin wrote:
>> On Monday, 14 August 2023 at 07:36:31 UTC, Ferhat Kurtulmuş
>> wrote:
>>> On Monday, 14 August 2023 at 06:40:04 UTC, thePengüin wrote:
>>>> hola a todos quisiera ejecutar este codigo de c++
>>>> `
>>>> #include \<iostream>
>>>>
>>>> using namespace std;
>>>>
>>>> int main() {
>>>>
>>>> return 0;
>>>> }
>>>>
>>>> int foo(int i, int j) {
>>>> cout \<\< i\<\<endl;
>>>> cout \<\< j \<\< endl;
>>>> return 7;
>>>> }
>>>> `
>>>>
>>>> con este comando: g++ -shared app2.cpp -o app2.obj
>>>> y este es mi codigo en Dlang
>>>>
>>>> `
>>>> #!/usr/bin/env dmd
>>>> import core.stdc.stdio;
>>>>
>>>> import std;
>>>>
>>>> alias print = writeln;
>>>>
>>>> extern(C++) int foo(int i, int j);
>>>> void main () {
>>>>
>>>> foo(3,6);
>>>>
>>>>
>>>> }
>>>> ` con este comando: dmd app1.d app2.obj
>>>> pero tengo este error:
>>>> lld-link: error: app2.obj: unknown file type
>>>> Error: linker exited with status 1
>>>
>>> ?Tu usas ambos de 64 bit o 32 bit para compiladores?
>>>
>>> No puedo reproducir tu codigo. Pero yo puedo ejecutar esto en
>>> Windows:
>>>
>>> cppcode.cpp
>>>
>>> ```d
>>> #include <iostream>
>>>
>>> using namespace std;
>>>
>>> // no nececitamos un main aqui
>>>
>>> int foo(int i, int j) {
>>> cout << i << endl;
>>> cout << j << endl;
>>> return 7;
>>> }
>>>
>>> ```
>>>
>>> main.d
>>>
>>> ```d
>>> extern(C++) int foo(int i, int j);
>>>
>>> void main () {
>>> foo(3,6);
>>> }
>>> ```
>>>
>>>
>>> La compulacion:
>>>
>>> cl cppcode.cpp -c
>>> dmd main.d cppcode.obj
>>
>> estoy usando el de 64 o almenos eso es lo que me dice cuando
>> hago un dmd --version:
>> DMD64 D Compiler v2.104.2-dirty
>> Copyright (C) 1999-2023 by The D Language Foundation, All
>> Rights Reserved written by Walter Bright
>>
>> por cierto "cl" en ves de g++, creo que es la abreviatura de
>> "compilador" no? porque cl no me sale como comando en el
>> mingw64x84
>
> Estoy escribendo en mi celular. Entonces no tomo ayudar de
> Google translate. Mi español no es bueno, disculpa. Nunca uso
> un mesclar de mingw-g++ y algun d compilador en Windows. cl es
> el comando del Visual C++. No sé si g++ y dmd son binarias
> compatibles. Yo siempre uso LDC en Windows. Creo que tu
> deberias installar e uso Visual studio c++ community edition.
> Los compiladores msvc juega bien con los compiladores de dlang.
>
> Que es cl.exe:
> https://learn.microsoft.com/en-us/cpp/build/reference/compiler-options?view=msvc-170
- te refieres al ldc de Dlang en windows no?
More information about the Digitalmars-d-learn
mailing list