【发布时间】:2010-12-14 12:14:01
【问题描述】:
我正在使用具有显式链接的共享库(使用dlopen 加载共享库)以便在 C++ 中实现插件模式。
是否可以定义一个指向共享库中定义的类的构造函数的函数指针,或者我必须在共享库中定义工厂方法,该方法将从共享库实例化(和初始化)类的对象?当然,在我的主应用程序中,我会定义一个指向工厂方法的函数指针,该方法将返回我需要的类的实例。
干杯
【问题讨论】:
-
在 Windows 上,您可以使用 __declspec(dllexport/dllimport) 导出和导入构造函数(实际上是整个类)。值得检查编译器的编译器文档,看看它是否提供类似的东西。
-
在 linux 上,默认情况下会导出所有内容,您可以链接到任何您想要的内容。但他正在使用显式链接(想想 WinAPI 中的 LoadLibrary/GetProcAddress),老实说,我不知道在这种情况下如何处理构造函数。这是个好问题。
标签: c++ linux design-patterns unix shared-libraries