当我们有一个 exedll 和一个 static library 附加到它时,我们可以使用 extern 关键字从 variablesfunctions 访问静态库的 exe 和/或 dll 。为了让事情更简单,让我们假设有一个 exe 和一个 lib 附加到它。

我想要做的是从 exe 调用 lib 的函数。

可执行代码

void doSomething() {
    // do something here
}

静态链接库代码
void onSomeEvent() {
    doSomething(); // call doSomething() here
}

反之亦然很容易,但我想知道这是否可以像 extern 关键字那样完成。或者最好的方法是什么?

我想到的是将 function pointer (如 void* )传递给 functions 中的 methods/lib 之一(可能传递给类构造函数)。我认为这应该可行,但我不想过多地接触库的代码,因为库不是我的,可以用更新的版本替换。我可以向其中添加/删除几行代码,但我想防止更改函数接口(interface)。

更好的 方式是什么?

最佳答案

当然,您只需要在库中声明函数即可。

void onSomeEvent() {
    void doSomething(); // declares the function
    doSomething(); // call doSomething() here
}

关于c++ - 尝试以相反的顺序使用 extern,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8213491/

10-11 22:40
查看更多