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
}