How can I execute C++ functions from Dlang?

Ferhat Kurtulmuş aferust at gmail.com
Mon Aug 14 07:36:31 UTC 2023


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




More information about the Digitalmars-d-learn mailing list