gpt4 book ai didi

c++ - 从 .dll 覆盖类/函数

转载 作者:太空狗 更新时间:2023-10-29 23:10:03 25 4
gpt4 key购买 nike

假设我有 A 类和 B 类。B 继承自 A 类,并实现了一些虚函数。唯一的问题是 B 是在 .dll 中定义的。现在,我有一个返回类 A 实例的函数,但它从返回类 B 实例的 .dll 中的静态函数中检索该函数。我的计划是调用创建的对象,并希望具有这些函数在 .dll 中执行而不是类 A 中定义的函数。出于某种原因,我不断收到受限内存访问错误。有什么我不明白的东西会阻止这个计划的实现吗?

最佳答案

C++ 类不能很好地跨越 DLL 边界。 DLL 和 EXE 需要使用完全相同的编译器和版本来构建——最好是一起构建。这是因为类实现细节,如 vtbl 布局/顺序以及一些标准库功能的实现(即 std::string 差异)是不可移植的。不同编译器的名称修改方案在编译器/版本之间也不适用。唯一可以可靠地暴露在 DLL 边界之外的接口(interface)是 C 接口(interface)。

因为我不知道这里的确切情况,所以我不能确定,但​​您可能正在跨 DLL 边界调用某种类型的未定义行为。

编辑:也有可能 DLL 在某个时候被卸载,导致调用 B 中不存在的代码。

关于c++ - 从 .dll 覆盖类/函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2576848/

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