小编juf*_*fma的帖子

如何正确从 D 接口到 C++?

我尝试在 C++ 和 D 之间建立接口。

\n

问题是我无法编译它。我使用了网站上的代码/命令行

\n
> g++ -c foo.cpp\n> dmd bar.d foo.o -L-lstdc++ && ./bar\n
Run Code Online (Sandbox Code Playgroud)\n

它不起作用:首先,DMD编译器不使用.o文件,所以我必须手动指定创建.obj文件,然后链接器抛出错误,因为它不知道/lstdc++,所以我配置了手动编译 cpp 库。

\n

这就是我现在遇到的问题,它抛出“找不到符号”错误,我不知道如何解决这个问题,我在编译时做错了什么吗?或者是在编程网站上?

\n

这是我的编译命令:

\n
PS C:\\Users\\kunde\\Downloads\\d-interface test> g++ -c -o test-cpp.obj test.cpp\nPS C:\\Users\\kunde\\Downloads\\d-interface test> dmd -L"G:\\GNUstep\\lib\\gcc\\mingw32\\4.6.1\\libstdc++.dll.a" -L"G:\\GNUstep\\lib\\gcc\\mingw32\\4.6.1\\libstdc++.a" .\\test-cpp.obj .\\test.d\ntest.obj : error LNK2019: Verweis auf nicht aufgel\xc3\xb6stes externes Symbol ""char __cdecl foo(int)" (?foo@@YADH@Z)" in Funktion "__Dmain".\ntest-cpp.exe : fatal error LNK1120: 1 nicht aufgel\xc3\xb6ste Externe\nError: linker exited with status 1120\n
Run Code Online (Sandbox Code Playgroud)\n

和我的代码:\ntest.d:

\n
import std.stdio;\n\nextern (C++) char foo(int i);\n\nvoid …
Run Code Online (Sandbox Code Playgroud)

c++ gcc d dmd interfacing

2
推荐指数
1
解决办法
239
查看次数

标签 统计

c++ ×1

d ×1

dmd ×1

gcc ×1

interfacing ×1