运行我的qt应用程序时出现错误Bex

时间:2014-03-21 02:09:05

标签: c++ qt dll

我正在编写一个将markdown转换为html的应用程序。并为此目的构建了一个基于“cpp-markdown”的dll,命名为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关闭到我的应用程序,因为该网站说: Problem Event Name: BEX, error message

但它不起作用。

1 个答案:

答案 0 :(得分:0)

最后,我发现我的Qt创建者的默认编译器是mingw,但是dll是用VC编译的。这两个编译器之间应该存在一些差异,并且std :: string(在我的情况下,“helloworld”)无法正确传递给DLL中的函数。

所以我的解决方案是使用相同的编译器编译所有代码。 谢谢!