gpt4 book ai didi

c++ - 将对象指针(之前创建的)传递给动态共享库的 extern "C"函数

转载 作者:行者123 更新时间:2023-11-28 07:33:07 24 4
gpt4 key购买 nike

<分区>

例子

我有 2 个编译在一起的文件:

  1. MyClass.h/cpp,其中包含数据和函数成员;

  2. Main.cpp 包含 int main() 并将加载从以下源代码编译的动态库;

==== 编译为 dynamiclib.so=========

  1. dynamic.c 具有extern "C"functionOfDynamic(MyClass*)

场景

在文件 main.cpp 中,我将加载 (dopen(dynamic.so,....)) 一个动态库(从 编译而来) dynamic.c),它的其中一个函数将被调用并传递一个 MyClass 指针。

我的问题:动态库中的函数是否可以调用MyClass的成员函数?

动态.c

#include "MyClass.h"

int SomeMethodWrapper(void *A){

return static_cast<MyClass*>(A)->SomeMethod(); // got core dump
}

extern "C" int functionOfDynamic(void* A) {
SomeMethodWrapper(A);
}

我有核心转储

注意:MyClass对象是在加载“dynamiclib.so”之前创建的

========更新==============

亲爱的

上面的代码应该没问题,因为我放错了,所以得到了核心转储,抱歉

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