2

プロジェクトにid3Tagライブラリを使用しています。Linuxでヘッダーとライブラリを正常に設定し、問題なくコンパイルしましたが、コードをWindowsに移動する際に問題が発生します。(私はWindowsの勉強を始めたばかりなので、無知である可能性があることを事前に申し訳ありません)。私の環境はQtCreatorです

問題はid3タグライブラリのヘッダーにあります(Linuxではそのような問題はありません!)私の.proファイルは次のとおりです。 ここに画像の説明を入力してください

私のエラーは次のとおりです。 ここに画像の説明を入力してください

そのヘッダー「id3/tag.h」を含めないと、完全にコンパイルされます。理由は何ですか?実際、私はまだWindows用にプログラミングしたことはありません。
私の手順は次のとおりです。1。Linux
のコードの一部をコンパイルしまし
た。2。LinuxからWindowsに正常にコンパイルされたソースコードでフォルダーをコピーしました(ヘッダーは現在のフォルダーにあります)。
3.そのヘッダーなしでコンパイルされたコード( "id3 / tag.h")。
4.そのヘッダー( "id3 / tag.h")を追加しました。5
。コンパイラから大量の苦情が寄せられました

ヒントを事前に感謝します!

4

3 に答える 3

2

コンパイラのメッセージをもっと注意深く読む必要があります。win32.readme.first.txt を読むように書かれているので、それを読んで、ライブラリをリンクしたい方法にビルド環境を設定することをお勧めします。

ID3LIB_LINKOPTION を設定していないためコンパイルに失敗し、ヘッダーで ID3_CPP_EXPORT が定義されていません。ただし、これは ID3_Frame を初期化するために必要です。詳細については、id3\globals.h を参照してください。

于 2012-08-15T08:12:31.163 に答える
1

.pro ファイルのセパレーター ( \Windows では ' '、Linux では ' ') に問題がある可能性があります。/プロジェクトファイルでこれを試してください:

#TEMPLATE, CONFIG, HEADERS, ...

win32 { # For Windows
    # Leave an empty line because of the backslash at the end of the variable
    SEPARATOR = \\

}

linux-g++ { # For Linux
    SEPARATOR = /
}

ID3_FOLDER = .$${SEPARATOR}idlib$${SEPARATOR}id3lib-3.8.3$${SEPARATOR}

LIBS += -id3 -L$${ID3_FOLDER}src$${SEPARATOR}.libs

INCLUDEPATH += $${ID3_FOLDER}include $${ID3_FOLDER}src$${SEPARATOR}.libs

編集:それはあなたの図書館の旗についてです。それを含むファイルが Windows で myLib.dll (または Linux で myLib.so) と呼ばれる場合は、-lmyLib. -lsthgあなたのプロジェクトファイルには、しかしのようなものはありません-id3

于 2012-08-15T03:09:12.630 に答える
0

回答ありがとうございます。回答の1つに適切なマークを付け、正確にどのような問題があったかを明確にするためにこの回答を追加しました。

問題を解決するために私がしたすべて:

私はmain.cppで定義しました(すべてのプログラムが制御されているソースコードを含むメインファイル)

    #define ID3LIB_LINKOPTION 3
    #define ID3_CPP_EXPORT 1

その後、42個近くのエラーが発生しましたが、幸いなことに、それらは新しいものでした. ここに画像の説明を入力

インターネットはそのようなタイプのエラーで過負荷になっているため、直観のおかげで何が問題なのかを発見しましたが、問題の原因に光を当てていません。

main.cpp でヘッダー windows.h を定義しました (ただし、他のヘッダーの前に配置する必要があります。そうしないと、考えられる膨大な数のエラーが発生します!)

したがって、main.cpp ファイルの最初の行は次のようになります。

    #define ID3LIB_LINKOPTION 3
    #define ID3_CPP_EXPORT 1
    #include <windows.h>
    #include "id3/tag.h"

そして、それはうまくいきます。これがいつか誰かを助けることを願っています。

QtCREATOR からそのライブラリを使用しようとしないでください !!!! VS studio c++ のみ、Mingw コンパイラでコンパイルしようと多くの時間を費やしましたが、Mingw でコンパイルされたソース コードは、Microsoft Visual によって生成されたライブラリとリンクできませんStudio は ABI が異なるため

于 2012-08-21T08:44:24.357 に答える