C ++链接extern函数作为成员函数

时间:2014-01-30 00:22:22

标签: c++

基本上,我已经编译了一个写成汇编的文件; .obj file。它有一个导出函数f。在C ++中,我编写了一个类,并希望将导出的函数f用作成员函数。

如果它被用作全局函数,我知道只需要写extern "C" f()。但是,这对成员函数不起作用,至少我没弄明白该怎么做。

那么,我该怎么办?

注意:函数f已正确写入。即它考虑了this指针等。它应该在汇编级别正常工作。

1 个答案:

答案 0 :(得分:4)

如果函数是作为自由函数编写的,则必须按照习惯的方式将其声明为自由函数。就像你不能用void foo()构建一个库然后以某种方式将其声明为void bar()并期望它工作一样,你不能使用自由函数并将其转换为成员函数。但是,你可以做的是在你的类中添加一个内联转发器,如下所示:

struct S;
extern "C" void f( S * );

struct S {
    void f() {
        using ::f;
        f(this);
    }
};

据我所知,这是你能做的最好的事情。