C++ Qt5-Windows:不允许dll链接错误和dllimport静态数据成员定义不一致

C++ Qt5-Windows:不允许dll链接错误和dllimport静态数据成员定义不一致,c++,windows,qt,c++11,qt5,C++,Windows,Qt,C++11,Qt5,我正在尝试使用Windows 10和Qt5.12构建一个项目。这个小程序正在使用可用的smtp协议。我可以确认,在我的Windows上,我有OpenSSL 1.1.1c,2019年5月28日。 在我的Ubuntu19.04上,同样的程序像往常一样编译和运行,但不是在Windows上 我在下面附上一个错误的打印屏幕;然而,这些主要有两种类型: 1不一致的dll链接 2不允许定义dllimport静态数据成员 接下来,Windows似乎需要自己的include,即include文件被设计为使用def

我正在尝试使用Windows 10和Qt5.12构建一个项目。这个小程序正在使用可用的smtp协议。我可以确认,在我的Windows上,我有OpenSSL 1.1.1c,2019年5月28日。 在我的Ubuntu19.04上,同样的程序像往常一样编译和运行,但不是在Windows上

我在下面附上一个错误的打印屏幕;然而,这些主要有两种类型:

1不一致的dll链接

2不允许定义dllimport静态数据成员


接下来,Windows似乎需要自己的include,即include文件被设计为使用define SMTP_构建集进行编译,其中源代码被添加到库或可执行文件中。您必须添加

DEFINES += SMTP_BUILD

到您的pro文件。

这些文件设计为使用源添加到库或可执行文件的定义SMTP_生成集进行编译。您必须添加

DEFINES += SMTP_BUILD

到您的pro文件。

您在构建库时定义了SMTP_BUILD吗?@Thomas,非常感谢您阅读此问题。我不是Windows用户,因为我主要使用Ubuntu。所以我猜答案是否定的。我该怎么做呢?我只克隆文件夹并尝试运行它。表明可能是你做的,也可能不是。看起来您没有浏览库,而是添加了源文件。那你可能会。需要将DEFINES+=SMTP\u BUILD行添加到您的.pro文件中。您在构建库时定义了SMTP\u BUILD吗?@Thomas,非常感谢您阅读此问题。我不是Windows用户,因为我主要使用Ubuntu。所以我猜答案是否定的。我该怎么做呢?我只克隆文件夹并尝试运行它。表明可能是你做的,也可能不是。看起来您没有浏览库,而是添加了源文件。那你可能会。需要将DEFINES+=SMTP\u生成行添加到.pro文件中。完成
#ifndef SMTPEXPORTS_H
#define SMTPEXPORTS_H

#ifdef SMTP_BUILD
#define SMTP_EXPORT Q_DECL_EXPORT
#else
#define SMTP_EXPORT Q_DECL_IMPORT
#endif

#endif // SMTPEXPORTS_H
DEFINES += SMTP_BUILD