我试图编写一个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)
http://stackoverflow.com/questions/11432940/what-does-error-code-0xc0000135-mean-when-starting- a-net-application –
你真的对_compiling_程序有问题吗?或与_running_? – Melebius
您可能会错过一些必需的DLL,在您的位置我会寻找一些工具来分析依赖关系并找出缺少的东西,我记得一个名为depends.exe的util可以提供帮助,但是我几年没有使用Windows不知道它是否仍然可用 – Marco