gpt4 book ai didi

C++:在 DLL 中绑定(bind)类函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:21:42 25 4
gpt4 key购买 nike

我对 DLL 导入和函数绑定(bind)比较陌生。假设我有一个 C++ 项目,它是一个完全用 OOP 编写的 GUI 库,旨在用于游戏。

然而,我的游戏项目是用 Delphi 编写的。我现在想将 Delphi 函数绑定(bind)到 DLL 中的函数。

我会知道如何使用简单的函数来做到这一点,而不需要像 C 中那样的类——但是 OOP 呢?

简而言之:我可以将 Delphi 函数绑定(bind)到由编译的 C++ 类组成的 DLL 中的函数吗?

类在编译过程中不会丢失吗?

最佳答案

我仍然在掌握 C++ 的许多方面,但希望以下内容能有所帮助。

我认为 C++ 的某些方面无法通过基于纯 DLL 导入的机制很好地转换。例如,我认为您无法支持多态性或方法重载。

但是,这并不意味着您不能使用类。我认为最简单的方式来表达这可能是如何工作的是一个玩具示例。

//Start with a class definition
class foo
{
int bar = 0;
int getBar();
};

// Now create a C API that you can access from Delphi
extern "C" {

void *createFoo()
{
return new foo();
}

int getBar(void *fooInstance)
{
foo *fooObj = (foo*)fooInstance;
return fooObj->getBar();
}

} // end of extern "C"

然后将 extern "C" 函数导出到 delphi 并使用它们。

我没有方便的编译器来测试它,可能会有错误,但希望有足够的东西来传达这个概念。如果有任何严重错误,请告诉我,我会改正。

关于C++:在 DLL 中绑定(bind)类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3619883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com