2015-11-05 125 views
2

我試圖編寫一個QT應用程序使用libXL,但是當我嘗試編譯時,我得到一個彈出框說"During Startup program exited with code 0xc0000135"。我已經弄清楚了哪一行導致了這個問題,它是startgame.cpp中的"Book* book = xlCreateBook();"行。當我評論這一行時,程序運行良好。是否有可能我錯誤地設置了庫?我將盡力在下面列出所有相關的代碼,並提前感謝您的幫助!C++ QT libXL錯誤:「在啓動程序退出代碼0xc0000135」

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(); 
} 

startgame.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)

+0

http://stackoverflow.com/questions/11432940/what-does-error-code-0xc0000135-mean-when-starting- a-net-application –

+0

你真的對_compiling_程序有問題嗎?或與_running_? – Melebius

+0

您可能會錯過一些必需的DLL,在您的位置我會尋找一些工具來分析依賴關係並找出缺少的東西,我記得一個名爲depends.exe的util可以提供幫助,但是我幾年沒有使用Windows不知道它是否仍然可用 – Marco

回答

4

查找libxl.dll並將其放置在同一目錄下,你.EXE

+0

這工作!謝謝! – atomiczap