Ошибка Bex при запуске моего приложения qt

0

Я пишу приложение для преобразования метокда в html. И построил dll на основе "cpp-markdown" для этой цели, названной markdown2html.dll. DLL хорошо работает в моей тестовой программе, но не работает в моем приложении qt. Здесь код:

QString tNotesTextEditor::markdown2html(QString articleContents){

QLibrary convertLib(tr("markdown2html.dll"));
std::string result;
if(convertLib.load()){
    QMessageBox::information(NULL, "OK", "DLL load is OK!");
    typedef std::string (*Fun)(std::string);
    Fun convertFunc = (Fun)convertLib.resolve("markdown2HTML");
    if(convertFunc){
        QMessageBox::information(NULL, "OK", "Function is found");
        std::string locale_text = articleContents.toLocal8Bit().constData();
        QMessageBox::information(NULL, "OK", "to stdstring is well");
        result = convertFunc("helloworld");
        QMessageBox::information(NULL, "OK", "Function works well");
        //QMessageBox::information(NULL, "OK", QString::fromLocal8Bit(result.c_str()));
        return QString::fromStdString(result.c_str());
    } else {
        QMessageBox::information(NULL, "OK", "Function not found");
        return NULL;
    }
} else {
    QMessageBox::information(NULL, "OK", "Lib not found");
    return NULL;
}

}

Сообщение "хорошо работает" никогда не показывалось, и я получаю сообщение об ошибке:

问题事件名称: BEX
应用程序名:  tNotes_client.exe
应用程序版本: 0.0.0.0
应用程序时间戳:    532af665
故障模块名称: StackHash_0a9e
故障模块版本: 0.0.0.0
故障模块时间戳:    00000000
异常偏移:   0028d3c9
异常代码:   c0000005
异常数据:   badc0de1
OS 版本:  6.1.7601.2.1.0.256.48
区域设置 ID:    2052
其他信息 1: 0a9e
其他信息 2: 0a9e372d3b4ad19135b953a78882e789
其他信息 3: 0a9e
其他信息 4: 0a9e372d3b4ad19135b953a78882e789

Я закрыл DEP для своего приложения, так как сайт говорит: Проблема Название события: BEX, сообщение об ошибке

но это не сработает.

  • 0
    Китайские сообщения об ошибках не помогают. Также может помочь, если вы предоставите заголовок include вашей DLL, чтобы люди могли видеть сигнатуры функций.
  • 0
    @Silicomancer Silicomancer Спасибо за ваш совет!
Теги:
dll
qt

1 ответ

0

Наконец, я понял, что компилятор по умолчанию моего создателя Qt является mingw, но dll скомпилирован с VC. Между этими двумя компиляторами должно быть несколько различий, а std :: string (в моем случае, "helloworld") не может корректно перейти к функции в DLL.

Поэтому мое решение компилирует все коды с одним и тем же компилятором. Благодарю!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню