0

qt 5.1のqtクリエーターでvs2010でコンパイルされた静的ライブラリを使用しようとすると問題が発生します。私はqt5.1を使用しています。vs2010コンパイラで/のためにコンパイルされました。

私の単純なライブラリのソースは次のようになります。

Lib_Test.h

#pragma once
#include <iostream>

class Lib_Test
{
  public:
    Lib_Test(void);
    ~Lib_Test(void);

    void HelloTest();
};

Lib_Test.cpp

#include "Lib_Test.h"

Lib_Test::Lib_Test(void)
{
}

Lib_Test::~Lib_Test(void)
{
}

void Lib_Test::HelloTest()
{
  std::cout << "Hello World!";
}

この 2 つのファイルは、「Lib_Test.lib」にコンパイルされます。ライブラリの呼び出しを簡素化するために、lib とヘッダー ファイルを「C:/Qt/」にコピーしました。私のqtプロジェクトファイル(C++コンソールアプリケーション用):

QT       += core
QT       -= gui

TARGET = Lib_Test_Qt
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

INCLUDEPATH += C:/Qt
DEPENDPATH += C:/Qt

win32:CONFIG(release, debug|release): LIBS += -LC:/Qt/
win32:CONFIG(release, debug|release): LIBS += -lLIB_Test

そして最後に main.cpp

#include <QCoreApplication>
#include <Lib_Test.h>

int main(int argc, char *argv[])
{
      QCoreApplication a(argc, argv);

      Lib_Test *lb = new Lib_Test();
      lb->HelloTest();

      return a.exec();
}

Qt Creator でプロジェクトをビルドしようとすると、次のエラー メッセージが表示されます。

main.obj:-1: Fehler:LNK2019: unresolved external symbol "public: void __thiscall Lib_Test::HelloTest(void)" (?HelloTest@Lib_Test@@QAEXXZ) referenced in function _main
main.obj:-1: Fehler:LNK2019: unresolved external symbol "public: __thiscall Lib_Test::Lib_Test(void)" (??0Lib_Test@@QAE@XZ) referenced in function _main
debug\Lib_Test_Qt.exe:-1: Fehler:LNK1120: 2 unresolved externals

HelloTest メソッドを静的メソッドとして宣言し、Lib_Test のインスタンスを作成せずに呼び出そうとすると、同様のエラー メッセージが表示されます。

main.obj:-1: Fehler:LNK2019: unresolved external symbol "public: static void __cdecl Lib_Test::HelloTest(void)" (?HelloTest@Lib_Test@@SAXXZ) referenced in function _main
debug\Lib_Test_Qt.exe:-1: Fehler:LNK1120: 1 unresolved externals

私は何が欠けていますか?誰か助けてくれませんか?今は本当にイライラしています:/。

編集:

msvs2010 コンソールで DUMPBIN /SYMBOLS Lib_Test.lib を試しましたが、得られるのは次のとおりです。

Microsoft (R) COSS/PE Dumper Version 10.00.40210.01
Copytight (C) Microsoft Corporation. All right reserved


Dump of file Lib_Test.lib

File Type: LIBRARY

それは私のライブラリがどういうわけか空であることを意味しますか?? :/

4

1 に答える 1

0

qmake ファイルで、win32:CONFIG(release, debug|release): LIBS += -C:/Qt/ -lLib_Test win32:CONFIG(release, debug|release): PRE_TARGETDEPS += C:/Qt/Lib_Test.lib を変更します。

win32:CONFIG(release, debug|release): LIBS += -LC:/Qt/
win32:CONFIG(release, debug|release): LIBS += -lLib_Test

または

win32:CONFIG(release, debug|release): LIBS += -LC:/Qt/
win32:CONFIG(release, debug|release): LIBS += -l_Test

そのうちの1つが機能するはずだと思います。Build メニューに移動し、qmake を実行することを忘れないでください。

于 2013-09-23T20:53:21.203 に答える