How can I execute C++ functions from Dlang?
Ferhat Kurtulmuş
aferust at gmail.com
Sat Aug 19 20:16:47 UTC 2023
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
More information about the Digitalmars-d-learn
mailing list