0

我正在使用 QScintilla 2.8。
我已经正确构建了 qscintilla2.dll。
我把它放在我的 c:\Qt\Qt5.2.1\mingw48_32\bin 文件夹中

我的路径是 Qt 设置的设置:

C:\Qt\Qt5.2.1\5.2.1\mingw48_32\lib;
C:\Qt\Qt5.2.1\5.2.1\mingw48_32\bin;
C:\Qt\Qt5.2.1\Tools\mingw48_32\bin;

在我的项目中,我将以下内容放入我的 .pro 文件中:LIBS += -lqscintilla2

在我的代码中:

#include <Qsci/qsciscintilla.h>
#include <Qsci/qscilexerhtml.h>
#include <Qsci/qscilexerjavascript.h>
#include <Qsci/qscilexerxml.h>
#include <Qsci/qscilexercss.h>
#include <Qsci/qscilexersql.h>
#include <Qsci/qscilexeryaml.h>

...
QsciScintilla *editor = new QsciScintilla();

该程序编译良好。但是当我运行程序时,它会在我跨步时崩溃:

QsciScintilla *editor = new QsciScintilla();

我看到的错误是在应用程序输出中: QWidget: Must construction a QApplication before a QWidget Invalid parameter passing to C runtime function。

我还收到一个消息框,上面写着:Microsoft Visual C++ 运行时库此应用程序已请求运行时以不寻常的方式终止它。
请联系应用程序的支持团队以获取更多信息。

2014 年 4 月 2 日更新 - 晚上 11:17 我移动了代码只是为了看看它如果我在应用程序首次加载后立即初始化它会有所不同

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  MainWindow w;
  ..
}

所以在主窗口中:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ...

    QsciScintilla *editor = new QsciScintilla();
    setCentralWidget(editor);

    ...
}

但它仍然因同样的问题而失败

2014 年 4 月 3 日更新 - 晚上 8:32 好的,我想我明白了。当我将项目构建为发布时,一切正常。当我将我的项目构建为调试时,它失败了。所以也许我需要构建一个 QScintilla 的调试版本

有任何想法吗。我用谷歌搜索但没有任何结果。
谢谢

4

1 回答 1

0

2014 年 4 月 3 日更新 - 晚上 8:32 我的解决方案是构建库的调试版本,一切正常。我使用了以下步骤:

qmake qscintilla.pro
mingw32-make -f Makefile.Debug
mingw32-make -f Makefile.Debug install

注意:确保将 qscintilla2.dll 复制到所有库所在的 bin 目录。就我而言,它在:

From:
C:\Qt\Qt5.2.1\5.2.1\mingw48_32\lib

To:
C:\Qt\Qt5.2.1\5.2.1\mingw48_32\bin
于 2014-04-03T19:13:34.303 回答