【发布时间】:2015-10-16 16:01:36
【问题描述】:
我有用 D 编写的库,它编译成带有 C 接口的 DLL。
当我尝试返回struct 时,我得到undefined reference to 'fooFunc()'。
从 D 库返回 C struct 的正确方法是什么?
这是我的 D DLL 代码:
// Earlier in source code
struct FooStruct {
int m = 0;
}
// ...
// In main()
export extern(C) FooStruct fooFunc() {
return FooStruct();
}
这是我的 (C++) 代码,它使用上述代码的编译后的 DLL:
// Header
typedef struct {
int m = 0;
} FooStruct;
FooStruct fooFunc();
// ...
// In main()
FooStruct foo = fooFunc();
【问题讨论】:
-
您将
extern ("C")放入 D 代码中,但未放入 C++ 代码中。怎么会?