0

QtでDLLを使用して作成しようとしています。DLL は、Qt フレームワークを使用しません。私のライブラリの .pro ファイルは次のとおりです。

TARGET = MyLib
TEMPLATE = lib

include(Botan.pri)
win32:INCLUDEPATH += "C:/botan/include"
win32:LIBS += "C:/botan/libBotan.a"

unix:INCLUDEPATH += "/usr/local/include/botan-1.10"
unix:LIBS += "/usr/local/lib/libbotan-1.10.a"

HEADERS += \
    HEADERS HERE

SOURCES += \
    SOUCRES HERE

ライブラリが正常にコンパイルされ、デバッグ/リリース フォルダーに MyLib.dll が作成されます。次に、ライブラリ ソースを完全にコピーし、「includes」フォルダのヘッダー ファイル以外をすべて削除しました。

次に、ライブラリを使用する新しいプロジェクトを作成しました。

これをプロジェクトファイルに追加しました:

INCLUDEPATH += "C:/Users/Stevie/Desktop/MyLib/include"
LIBS += "C:/Users/Stevie/Desktop/MyLib/MyLib.dll"

ヘッダーには問題がなく、私の DLL は正常であることがわかります (存在しないパスに変更すると、エラーがスローされます。現時点では発生しません)。

「.cpp」ファイルに移動すると、ヘッダー ファイルがインクルードされ、ライブラリを使用しようとすると、「MyLib::... への未定義の参照」がスローされます。DLL を含めているので、その理由はわかりませんが、完全に問題なく見つかるはずです。

また、Botan はこのようによく使用するので、Botan ではないと 99% 確信しており、正常に動作します。とにかく、念のために「Botan.dll」を含めますが、Botan で未定義のエラーがスローされることはありません。

ありがとう。

4

1 に答える 1

0

LIBS += "C:/Users/Stevie/Desktop/MyLib/MyLib.dll"
をLIBS
+= -L$$quote(C:/Users/Stevie/Desktop/MyLib) LIBS
+= -l$$quote( MyLib)

あなたのライブラリには Q_DECL_EXPORT / Q_DECL_IMPORT マクロがありますか?

結局のところ、ライブラリを使用するプロジェクトをクリーンアップして再構築します。

于 2012-10-24T05:30:28.697 に答える