2012-05-24 106 views
0

我有Windows动态库的问题。我使用Qt/C++在Linux中编写了一个共享小部件库。一切都很好,我可以将每个应用程序链接到我的图书馆。但在Windows中,相同的代码编译,但任何应用程序都无法使用它。我收到了很多类型为undefined reference to ...的链接器错误,这些错误都在库中实现。Windows中的动态库链接问题

我发现在Windows中,代码的符号表默认情况下不会导出到二进制文件。我必须指定我想在最终的dll中显示哪个函数。但我无法设法找到一种方法来做到这一点。

以下this指令,我将Q_DECL_EXPORT添加到所有类声明。但它对我不起作用。

回答

2

您应该将MYSHAREDLIB_EXPORT添加到您的类声明中,而不是Q_DECL_EXPORT。同样来自你提供的链接,你相应的定义。

如果你添加了Q_DECL_EXPORT,你告诉编译器在每个包含头文件的模块中为该类生成代码,而不是期望该类在另一个库中被导出。

+0

我正在导出类,它们的代码默认不包含在最终的二进制文件中。因为该项目是一个小部件库,只有插件类不是一个小部件itlelf。我应该分开小部件库和设计器插件。谢谢 –