C++ QT libXL 错误:"During Startup program exited with code 0xc0000135"

C++ QT libXL Error: "During Startup program exited with code 0xc0000135"

本文关键字:program exited with 0xc0000135 code Startup During QT libXL 错误 C++      更新时间:2023-10-16

我正试图编写一个使用libXL的QT应用程序,但当我尝试编译时,我会收到一个弹出框,上面写着"During Startup program exited with code 0xc0000135"。我已经弄清楚是哪一行导致了问题,它是startgame.cpp中的"Book* book = xlCreateBook();"行。当我注释掉这一行时,程序运行得很好。有可能是我把图书馆设置错了吗?我将尝试在下面包含所有相关代码,并提前感谢您的帮助!

stattracker.pro

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Stattracker
TEMPLATE = app

SOURCES += main.cpp
    stattracker.cpp 
    startgame.cpp
HEADERS  += stattracker.h 
    varstruct.h 
    startgame.h
FORMS    += stattracker.ui

win32: LIBS += -L$$PWD/libxl-3.6.4.0/lib/libxl.lib
INCLUDEPATH += $$PWD/libxl-3.6.4.0/include_cpp

main.cpp

#include "stattracker.h"
#include <QApplication>
#include "varstruct.h"
#include <QString>
#include <windows.h>
#include <shlobj.h>

gameManager gm;
wchar_t homePath[MAX_PATH];
wchar_t awayPath[MAX_PATH];
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    gm = *new gameManager;
    homePath[MAX_PATH] = *new wchar_t;
    awayPath[MAX_PATH] = *new wchar_t;
    Stattracker w;
    w.show();
    return a.exec();
}

启动游戏.cpp

#include ...
void Stattracker::initializeVars()
{
    //This function initializes all game variables to starting value
}
void Stattracker::newFile(QString path, QString firstName, QString lastName)
{
    using namespace libxl;
    Book* book = xlCreateBook(); //WHEN THIS LINE IS COMMENTED, THE PROGRAM COMPILES FINE
}
void Stattracker::getInput()
{
    bool homePosition[11], homeOrder[10], awayPosition[11], awayOrder[10];
    wchar_t my_documents[MAX_PATH];
    gm.homeTeam.teamName = ui->teamName->text();
    gm.awayTeam.teamName = ui->teamName_2->text();
    HRESULT result = SHGetFolderPath(NULL,CSIDL_PERSONAL,NULL,SHGFP_TYPE_CURRENT,my_documents);
    QString documentsPath = QString::fromWCharArray(my_documents);
    QString homePathA = documentsPath + "\Stattracker\" + gm.homeTeam.teamName;
    QString awayPathA = documentsPath + "\Stattracker\" + gm.awayTeam.teamName;
    QString pathCheckA = documentsPath + "\Stattracker\";
    QString curFileA;
    wchar_t pathCheckB[MAX_PATH];
    wchar_t curFile[MAX_PATH];
    pathCheckA.toWCharArray(pathCheckB);
    homePathA.toWCharArray(homePath);
    awayPathA.toWCharArray(awayPath);
    if((GetFileAttributes(pathCheckB))==INVALID_FILE_ATTRIBUTES)
    {
        CreateDirectory(pathCheckB, 0);
    }
    if((GetFileAttributes(homePath))==INVALID_FILE_ATTRIBUTES)
    {
        CreateDirectory(homePath, 0);
    }
    if((GetFileAttributes(awayPath))==INVALID_FILE_ATTRIBUTES)
    {
        CreateDirectory(awayPath, 0);
    }

    if(ui->firstName->text()!="First Name" && ui->lastName->text()!="Last Name")
    {
        gm.homeTeam.roster[0].firstName = ui->firstName->text();
        gm.homeTeam.roster[0].lastName = ui->lastName->text();
        curFileA = homePathA + "\" + gm.homeTeam.roster[0].lastName + "_" + gm.homeTeam.roster[0].firstName + ".xls";
        curFileA.toWCharArray(curFile);
        if((GetFileAttributes(curFile))==INVALID_FILE_ATTRIBUTES)
        {
        }
    }
}
void Stattracker::startGame()
{
    initializeVars();
    getInput();
}

让我知道我是否应该包括任何其他文件(stattracker.cpp、stattracker.h或varstruct.h)

找到libxl.dll并将其放置在与.exe 相同的目录中