私が作ったライブラリ(dll)でプロジェクトをビルドしようとしています。私は前にロードするか、ライブラリを作成しようとしたことがないし、次のエラーが発生しています。Qt C++でDLLを使用する
エラー: `IMP __ZN6NeuronC1Ev」はQtで
に未定義の参照、エラーが次の行に示されています。ここで
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow) <--------------------------- Error indicated here.
{
ui->setupUi(this);
}
プロジェクトファイル
QT += core gui
TARGET = Jane
TEMPLATE = app
LIBS += -L quote(C:\Programming\Jane\Jane\Source\Neuron.dll)
SOURCES += main.cpp\
MainWindow.cpp
HEADERS += MainWindow.h
FORMS += MainWindow.ui
はNEURONSHARED_EXPORTマルコが "Neuron_global.h"
#ifndef NEURON_GLOBAL_H
#define NEURON_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(NEURON_LIBRARY)
# define NEURONSHARED_EXPORT Q_DECL_EXPORT
#else
# define NEURONSHARED_EXPORT Q_DECL_IMPORT
#endif
#endif // NEURON_GLOBAL_H
で定義されている私は
#ifndef NEURON_H
#define NEURON_H
#include <QList>
#include "Neuron_global.h"
#include <Sensor.h>
class NEURONSHARED_EXPORT Neuron
{
public:
explicit Neuron();
const double getOutput() const;
const double & getWeight() const;
void setWeight(const double& weight);
private:
double weight; // The weight of this neuron.
QList<Neuron*> neurons; // This Neuron's children.
QList<Sensor*> sensors; // This Neuron's Sensors.
};
#endif // NEURON_H
を輸出してきたクラスの1つです
アドバイスがあればこれを修正する方法については、私は非常に感謝します。
編集: libNeuron.aファイルをproファイルのLIBS引数に追加しました。しかし、私は今、次のエラーを取得しています。
LIBS + = libNeuron.a
-lNeuron.a
任意のアイデアを見つけることができませんか?
あなたのDLLはQtプロジェクトをビルドしようとしているのと同じコンパイラ(バージョンを含む)でビルドされていますか?異なるコンパイラ(または同じコンパイラの異なるリビジョン)でも、C++関数の名前を変更するスキームが異なることがあります。これは、表示されている種類のエラーを引き起こす可能性があります。 – Praetorian
'ui'変数がポインタとして宣言されている理由はありますか?そうしないと、ダイナミックなメモリ割り当てで初期化する必要がなくなるため、おそらく問題を絞り込むのに役立つかもしれません。 – qid
どちらも同じコンパイラとマシンがDLLとプログラムに使用されていました。 – jecjackal