c++ - 从它在共享对象中的位置创建一个类对象

标签 c++ shared-libraries dynamic-linking shared-objects

在 C 中,您可以通过 dlopen() 动态链接共享对象,并使用 dlsym() 定位特定符号(函数)的地址并将其分配给函数指针。

在C++中,如果你碰巧知道类构造函数的地址,你是否能够创建 一个新的对象出来了吗?我确实意识到,使用返回类对象的静态方法是 c++ 中动态链接的约定。

我很好奇是否可以从构造函数地址创建对象。如果是这样,你能举个例子吗?

提前致谢

最佳答案

你不能。问题是你不能直接调用构造函数;所有构造函数调用都由编译器隐式生成。这也意味着您不能通过函数指针调用它。

我也只是尝试获取构造函数的地址,这也没有用(尽管这只是一个快速的 hack,不能确定它是否真的有效)——因为构造函数没有返回类型,下一个问题就是如何为该函数指针编写类型。

关于c++ - 从它在共享对象中的位置创建一个类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12665563/

相关文章:

c++ - 链接 : Static vs Dynamic

gcc - 为什么 gcc 在 x86_64 上编译静态库时不隐式提供 -fPIcflags

c++ - 静态成员定义中的双 `template` 关键字

linux - 加载共享库时出现 cscope 错误

shared-libraries - 如何将共享库搜索路径添加到可执行文件?

c++ - 将库链接到 visual studio 2015 中的 android ndk 应用程序

c++ - 如何检查用户是否没有输入任何字符串?

c++ - 如何在导入另一个库的库中修复 "invalid use of non-static member function"

c++ - 如何定义和平滑 3D cv::Mat

linux - 将 Qt 从 Linux 集成/移植到嵌入式 Linux