我有一个Windows动态库的问题。我使用Qt / C ++在Linux中编写了一个共享的小部件库。一切都很好,我可以将每个应用程序链接到我的库。但在Windows中,相同的代码编译,但任何应用程序都无法使用它。我收到很多undefined reference to ...
类型的链接器错误,这些错误都在库中实现。
我发现在Windows中,默认情况下代码符号表不会导出为二进制。我必须指定我想在最终的dll中看到哪个函数。但我无法找到办法做到这一点。
按照this条提示,我将Q_DECL_EXPORT
添加到所有类声明中。但它对我不起作用。
答案 0 :(得分:2)
您应该在类声明中添加MYSHAREDLIB_EXPORT
,而不是Q_DECL_EXPORT
。也可以从您提供的链接中进行相应的定义。
如果添加Q_DECL_EXPORT
,则告诉编译器在包含标题的每个模块中为该类生成代码,而不是期望将类导出到另一个库中。