我有一个应用程序和DLL文件中的几个插件.插件通过导出库使用应用程序中的符号.应用程序链接在几个静态库中,这是大多数符号的来源.只要应用程序使用符号,这就可以正常工作.如果那里没有使用符号,我在编译DLL时会遇到链接器错误.
如何强制导出仅在插件中使用的符号?
为了触发导出,我尝试过这样的事情:
class MyClassExporter { MyClass mInstance; public: MyClassExporter() {} }; static MyClassExporter TheMyClassExporter;
在其中一个静态库中,应用程序由强制导出组成,这不起作用.
回应Greg(感谢答案)并澄清:我要强制导出的类是MyClass(已定义__declspec(...),具体取决于我想要导出或导入).MyClassExport是我试图强制将未使用的(就应用程序而言)符号包含在应用程序中.我想"触摸"符号,以便链接器将它们识别为已使用并将它们包含在应用程序中,以便它可以将这些符号导出到我的插件中.将静态库链接到插件不是一种选择,因为它们包含可复制的单例(app和DLL各自都有自己的静态变量副本).