1

私はQTCreatorを初めて使用します。Visual Studio で Dcmtk ライブラリを使用して小さなプログラムを作成しましたが、GUI でそれを作成しようとしています。そのために QTCreator で同じプログラムを作成して、その GUI 機能を追加できるようにしています。しかし、ヘッダー ファイルと .lib ファイルを QTCreator に追加しようとすると、問題が発生します。Visual Studio でプログラムを実行するときに、次のライブラリ ライブラリを追加しました。

dcmdata.lib
oflog.lib
ofstd.lib
ws2_32.lib
netapi32.lib

デバッグモードのライブラリディレクトリ:

D:\dcmtk-3.6.0\Lib files\Debug;

リリースモードの場合は

D:\dcmtk-3.6.0\Lib files\Release;

Visual Studio でヘッダー ファイルを追加するために、インクルード ディレクトリを次のように配置します。

D:\dcmtk-3.6.0\Prefix Files\include;

そのため、.pro ファイルの QTCreator の場合、lib ファイルとヘッダー ファイルのディレクトリを編集して追加し、必要な lib ファイルを指定すると、.pro ファイルは次のようになります。

#-------------------------------------------------
#
# Project created by QtCreator 2013-05-02T10:59:41
#
#-------------------------------------------------

QT       += core#adding the core framework

QT       -= gui#removing the gui portion

TARGET = untitled#targetting the project
CONFIG   += console#defining that it is console application
CONFIG   -= app_bundle#

TEMPLATE = app


SOURCES += main.cpp#adding the main.cpp as source file
LIBS +="D:/dcmtk-3.6.0/Lib files/Release"
-ldcmdata\
-loflog\
-lofstd\
-lws2_32\
-lnetapi32\
-wsock32\
LIBS +="D:/dcmtk-3.6.0/Lib files/Debug"
-ldcmdata\
-loflog\
-lofstd\
-lws2_32\
-lnetapi32\
-lwsock32\
INCLUDEPATH += "D:/dcmtk-3.6.0/Prefix Files/include"

まだプログラミングを始めていませんが、#include ディレクティブを使用してヘッダー ファイルの名前を追加しただけで、コードは次のようになります。

#include <QCoreApplication>
#include <QDebug>
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmdata/dctk.h"
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QString mystr="Hellow world";
    qDebug() <<mystr;
    return a.exec();
}

しかし、これをビルドしようとするとエラーが発生します。エラーは次のとおりです。

D:\QtFiles\untitled\main.cpp:3: error: C1083: Cannot open include file: '/dcmtk/config/osconfig.h': No such file or directory

ヘッダー ファイルと lib ファイルをプログラムにリンクしているときにエラーが発生したようです。プログラミング コードの 2 行

#include "dcmtk/config/osconfig.h"
    #include "dcmtk/dcmdata/dctk.h"

Visual Studio ではエラーが発生しないため、問題はないと確信しています。外部ヘッダーと lib ファイルをリンクする際にどのような間違いを犯しているのか教えていただけますか?

解決:

外部を次のようにリンクする .pro ファイルの行を変更したところ、機能しました。

LIBS += -L"D:/dcmtk-3.6.0/Lib files/Release" \
-ldcmdata\
-loflog\
-lofstd\
-lws2_32\
-lnetapi32\
-lwsock32\

LIBS += -L"D:/dcmtk-3.6.0/Lib files/Debug" \
-ldcmdata\
-loflog\
-lofstd\
-lws2_32\
-lnetapi32\
-lwsock32\

INCLUDEPATH += "D:/dcmtk-3.6.0/Prefix Files/include/"
4

1 に答える 1

1
  1. あなたは引用符を忘れましたINCLUDEPATH
  2. -Lパスの前のプレフィックスを忘れましたLIBS
  3. \のパスの後に忘れましたLIBS
  4. 絶対パスは使用しないでください。必要に応じて、変数に抽出します。
  5. を使用して、デバッグとリリースのケースを分離する必要がありますCONFIG(debug, debug|release)

したがって、プロジェクトは次のようになります

QT       = core
TARGET = untitled#targetting the project
CONFIG   += console#defining that it is console application
CONFIG   -= app_bundle#
TEMPLATE = app
DCMTK="D:/dcmtk-3.6.0"

DCMTK_LIBS_PREFIX=$$DCMTK"/Lib files"
DCMTK_INCLUDE=$$DCMTK"/Prefix Files/include"
INCLUDEPATH+=$$DCMTK_INCLUDE

SOURCES += main.cpp#adding the main.cpp as source file

CONFIG(debug, debug|release) {
LIBS +=-L$$DCMTK_LIBS_PREFIX/Debug
} else {
LIBS +=-L$$DCMTK_LIBS_PREFIX/Release
}
LIBS+= -ldcmdata -loflog -lofstd -lws2_32 -lnetapi32 -wsock32
于 2013-05-03T10:15:21.193 に答える