3

鉴于此接口定义在一个二进制文件中:

struct ISomething
{
    virtual void __stdcall DoSomething() = 0;
};

这个在另一个二进制文件中定义的函数签名是否安全?

bool __stdcall RunSomething(const ISomething &something);

或者,必须

bool __stdcall RunSomething(const ISomething *something);

(假设在非 Visual Studio 编译器上 d 为空。__stdcall#define

4

1 回答 1

0

引用应该在二进制文件之间正常工作。它们在程序集级别作为指针实现。我认为标准 C++ 和 Boost 库中有这样的例子(也许std::string::string(const std::string&))。

但是,如果二进制文件不是使用相同的编译器和版本构建的,那么您可能会遇到名称修改问题,但这与引用无关。

于 2012-12-31T17:36:30.830 回答