win下生成core文件

#ifndef __CCOREMGR__H_
#define __CCOREMGR__H_
#include "singleton.h"
#include "CLogmanager.h"

#if defined(WIN32) || defined(_WIN32)
#include<Windows.h>  
#include<DbgHelp.h>  
#pragma comment(lib,"DbgHelp.lib") 
#elif  __linux__
#endif

class CCoreMgr : public CSingleton<CCoreMgr>{
    SINGLE_CLASS_INITIAL(CCoreMgr);
public:
    ~CCoreMgr();

#if defined(WIN32) || defined(_WIN32)
    static void CreateDumpFile(LPCWSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException);
    static LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException);
#endif

public:
    int Init();
    int UnInit();

private:
    bool mbInit;
};

#define sCCoreMgr CCoreMgr::Instance()
#endif


#include "CoreMgr.h"

CCoreMgr::CCoreMgr(){
    mbInit = false;
}

CCoreMgr::~CCoreMgr(){
}

#if defined(WIN32) || defined(_WIN32)
void CCoreMgr::CreateDumpFile(LPCWSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException) {
    fprintf(stderr, "Create CoreDump\n");
    HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    // Dump信息  
    MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
    dumpInfo.ExceptionPointers = pException;
    dumpInfo.ThreadId = GetCurrentThreadId();
    dumpInfo.ClientPointers = TRUE;
    // 写入Dump文件内容  
    MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);
    CloseHandle(hDumpFile);
}

LONG CCoreMgr::ApplicationCrashHandler(EXCEPTION_POINTERS *pException) {
    struct systemtime_t stNow = get_now_time();
    char szFileName[1000];
    safe_snprintf(szFileName, 1000, _TRUNCATE, "%02d-%02d-%02d-%02d-%02d-%02d.dmp", stNow.tmyear, stNow.tmmon, stNow.tmmday, stNow.tmhour, stNow.tmmin, stNow.tmsec);
    CCoreMgr::CreateDumpFile(L"AnalySisSvr.dmp", pException);
    return EXCEPTION_EXECUTE_HANDLER;
}
#endif

int CCoreMgr::Init() {
#if defined(WIN32) || defined(_WIN32)
    fprintf(stderr, "Init Core\n");
    SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)CCoreMgr::ApplicationCrashHandler);
    mbInit = true;
#elif  __linux__
#endif
    return 0;
}

int CCoreMgr::UnInit() {
    return 0;
}

 

### 回答1: 在 Windows 下使用 CMake 编译 Qt 可以分为以下几个步骤: 1. 安装 Qt 首先需要安装 Qt,可以从官网下载安装程序进行安装。安装完成后,需要设置环境变量 QTDIR,指向 Qt 的安装目录。 2. 安装 CMake CMake 是一个跨平台的开源构建工具,可以从官网下载安装程序进行安装。 3. 配置 CMake 在配置 CMake 之前,需要先创建一个 CMakeLists.txt 文件,该文件描述了项目的构建过程。下面是一个简单的 CMakeLists.txt 文件示例: ``` cmake_minimum_required(VERSION 3.5) project(MyProject LANGUAGES CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Qt5 COMPONENTS Widgets REQUIRED) add_executable(MyApp main.cpp) target_link_libraries(MyApp Qt5::Widgets) ``` 上面的示例文件中,指定了项目的名称和编程语言为 C++,并且使用了 Qt 的 Widgets 模块。最后创建了一个可执行文件 MyApp,并链接了 Qt5::Widgets 库。 接下来,在命令行中进入项目目录,执行以下命令进行配置: ``` mkdir build cd build cmake .. ``` 上述命令中,首先创建一个 build 目录,然后进入该目录,最后执行 cmake 命令进行配置。配置完成后,会在 build 目录中生成 Makefile 文件。 4. 编译项目 在命令行中执行以下命令进行编译: ``` make ``` 编译完成后,会在 build 目录中生成可执行文件 MyApp。 以上就是在 Windows 下使用 CMake 编译 Qt 的基本步骤。注意,上述命令中涉及到的路径需要根据实际情况进行修改。 ### 回答2: 在Windows下使用CMake编译Qt可以采取以下步骤: 1. 安装Qt:首先,需要在计算机上安装Qt开发框架。可以从Qt官方网站下载适用于WindowsQt安装程序,并按照提示完成安装。 2. 安装CMake:接下来,需要在计算机上安装CMake工具。可以从CMake官方网站下载适用于Windows的CMake安装程序,并按照提示完成安装。 3. 创建CMakeLists.txt文件:在项目的根目录下创建一个CMakeLists.txt文件。该文件包含描述如何构建项目的指令。 4. 配置CMake:使用命令行或图形界面工具打开CMake,并指定项目的源代码和构建目录。将源代码目录指向包含CMakeLists.txt文件的根目录,并选择构建目录,用于生成构建文件。 5. 生成构建文件:点击"Configure"按钮,CMake将解析CMakeLists.txt文件,并根据指令生成构建文件。可以选择生成Makefile、Visual Studio工程文件或其他支持的构建系统文件。 6. 编译项目:点击"Generate"按钮,CMake将生成所选构建系统所需的文件,可以在构建目录中找到。 7. 构建项目:使用所选的构建系统工具(例如,在Visual Studio中打开工程文件,或在命令行中使用make命令),进行实际的编译和构建过程。 8. 运行项目:完成编译后,可以在生成的可执行文件或库文件中找到生成Qt应用程序,并运行它。 注意:在CMakeLists.txt文件中,应该指定项目需要的Qt模块和库,并确保CMake能够找到所需的Qt安装路径。可以使用find_package(Qt5 COMPONENTS ...)指令来查找并链接所需的Qt库。同时还可以设置其他构建选项,如编译器标志、链接选项等。 总之,使用CMake编译Qt项目可以提供更灵活和可移植的构建过程,可以轻松管理和跨平台编译Qt应用程序。 ### 回答3: 在Windows操作系统下使用CMake来编译Qt有以下几步: 1. 首先确保已经安装了CMake和Qt。可以从官方网站上下载并安装它们。 2. 创建一个新的CMakeLists.txt文件,该文件会告诉CMake如何构建和编译我们的Qt项目。 3. 在CMakeLists.txt文件中,添加以下内容: ``` cmake_minimum_required(VERSION 3.5) project(MyQtProject) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) if(WIN32) set(CMAKE_PREFIX_PATH "C:/Qt/Qt5.15.2/5.15.2/msvc2019_64") #设置Qt安装路径 endif() find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED) file(GLOB_RECURSE SOURCES src/*.cpp) file(GLOB_RECURSE HEADERS include/*.h) add_executable(MyQtProject ${SOURCES} ${HEADERS}) target_link_libraries(MyQtProject PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets) ``` 其中的"project(MyQtProject)"可以根据实际项目名称进行修改。"set(CMAKE_PREFIX_PATH "C:/Qt/Qt5.15.2/5.15.2/msvc2019_64")"是设置Qt的安装路径,需要根据自己的实际安装路径进行修改。 4. 在项目根目录下创建一个build文件夹,用于存放生成的构建文件。 5. 打开命令提示符或者使用CMake GUI,并进入build文件夹的路径。 6. 在命令提示符或CMake GUI中执行以下命令来生成构建文件: ``` cmake .. ``` 7. 构建生成的构建文件,执行以下命令(如果使用CMake GUI,则可以直接点击“Generate”按钮): ``` cmake --build . ``` 8. 构建完成后,我们就可以在build文件夹中找到编译生成的可执行文件。 这样,我们就成功使用CMake来编译Qt项目了。记得根据自己的实际情况修改相应的路径和文件名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值