我正在尝试在我的 Qt Creator 项目中使用外部库。我在 Windows 上使用 Visual C++ 构建它。
我将此添加到我的 qmake 文件中:
# Include libspotify
INCLUDEPATH += C:\\libspotify\\include
LIBS += -LC:\\libspotify\\lib -llibspotify
然后我去使用库中的一些 typedef 结构:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <libspotify/api.h>
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
sp_session_config spConfig;
sp_session spSession;
};
#endif // MAINWINDOW_H
现在在 IDE 编辑器中,语法高亮将 sp_session_config 和 sp_session 标记为紫色,表示编辑器可以很好地找到这些 typedef(如果它没有找到定义,它将使文本变为黑色)。
但是当我构建时,我得到了这个:
mainwindow.h:32: error: C2079: 'MainWindow::spSession' uses undefined struct 'sp_session'
现在我知道编译器正在查找 api.h 文件,因为如果我将其更改为虚假文件名,它会吐出一个未找到文件的错误。
我究竟做错了什么?
编辑:头文件定义这样的结构:
extern "C" {
typedef struct sp_session sp_session; ///< Representation of a session
}