1

Qt を使用して開発作業を行いたいと考えています。私はいくつかの小さなアプリを作成し、いくつかのチュートリアルに従いました。すべて順調で、まっすぐに見えます。

実行される開発には、win32 dll に含まれる既存のコードの使用が含まれます。このコードを最小限の手間で再利用し、Qt アプリにリンクしたいと考えています。ヘッダー、ライブラリ、および dll があるので、実行時に動的にリンクするのではなく、コンパイル時にリンクします。

私はこれをやろうとしましたが、Qt は常に次のようなリンク エラーで不平を言います: main.obj:-1: エラー: LNK2019: 未解決の外部シンボル _ imp _Add referenced in function _main

.pro ファイルをどのように調整しても、常に問題が発生します。

私は何時間もかけてグーグルで検索し、情報の断片を見つけました。物語全体を語る一つの答えを見つけることができませんでした。私が求めているのは一連の手順であり、従う必要があるチュートリアルのようなシーケンスです。Qt のインストール例にも例があるかもしれませんが、見つけることができませんでした。

これは、メインの開発に移るために作業を開始しようとしてきた単純な「ノックアップ」です。これは、MS チュートリアル dll MathsFunc に基づいています。

win32 dll:

// Visual Studio 2005
//Funcs.h
#ifdef MATHFUNCS_EXPORTS
    #define MATHFUNCSDLL_API __declspec(dllexport)
#else
    #define MATHFUNCSDLL_API __declspec(dllimport) 
#endif

#ifdef __cplusplus
extern "C" {                    /* Assume C declarations for C++ */
#endif

// Returns a + b
MATHFUNCSDLL_API double Add(double a, double b); 

#ifdef __cplusplus
}                   /* Assume C declarations for C++ */
#endif

//Funcs.cpp
#include "Funcs.h"

double Add(double a, double b)
{
    return a + b;
}

dll をインポートする Qt アプリ。

//main.cpp
#include <QCoreApplication>

#include "../../mathfuncs/funcs.h"

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

    double dResult = Add(1.0,2.0);

    printf("1 + 2 = %f\n",dResult);

    return a.exec();
}

//Qt プロジェクト ファイル .por

#-------------------------------------------------
#
# Project created by QtCreator 2013-03-04T09:16:18
#
#-------------------------------------------------

QT       += core

QT       -= gui

TARGET = Useit
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

INCLUDEPATH += c:/tmp/mathfuncs

HEADERS += c:/tmp/mathfuncs

LIBS += c:/tmp/mathfuncs/MathFuncs.lib

ご意見をお寄せいただきありがとうございます。

D.

4

0 に答える 0