0

我对 Windows 动态库有疑问。我使用 Qt/C++ 在 Linux 中编写了一个共享的小部件库。一切正常,我可以将每个应用程序链接到我的库。但是在 Windows 中同样的代码可以编译,但是任何应用程序都不能使用它。我收到了很多类型的链接器错误,undefined reference to ...这些错误都在库中实现。

我发现在 Windows 中,默认情况下,代码的符号表不会导出为二进制。我必须指定我希望在最终 dll 中可见的函数。但我无法设法找到这样做的方法。

按照说明,我添加Q_DECL_EXPORT到所有类声明中。但这对我不起作用。

4

1 回答 1

2

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

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

于 2012-05-24T14:20:03.743 回答