#pragma once #include "GdCPP_Exports.h" #include #include #include #include "sVersion.h" GDCPP_API int64_t getTimeMsTick(); GDCPP_API void OutputDebugPrintf(const char* strOutputString, ...); GDCPP_API bool GetFileVersion(const wchar_t* sTargetFileName, std::wstring& verstr); GDCPP_API bool GetFileVersion(const wchar_t* sTargetFileName, sVersion& ver); GDCPP_API bool GetFileVersion(const wchar_t* sTargetFileName, sVersion2& ver); GDCPP_API bool GetProductVersion(const wchar_t* sTargetFileName, std::wstring& verstr); GDCPP_API bool GetProductVersion(const wchar_t* sTargetFileName, sVersion& ver); GDCPP_API bool GetProductVersion(const wchar_t* sTargetFileName, sVersion2& ver); inline bool GetFileVersion(const std::wstring& sTargetFileName, std::wstring& verstr) { return GetFileVersion(sTargetFileName.c_str(), verstr); } inline bool GetFileVersion(const std::wstring& sTargetFileName, sVersion& ver) { return GetFileVersion(sTargetFileName.c_str(), ver); } inline bool GetProductVersion(const std::wstring& sTargetFileName, std::wstring& verstr) { return GetProductVersion(sTargetFileName.c_str(), verstr); } inline bool GetProductVersion(const std::wstring& sTargetFileName, sVersion& ver) { return GetProductVersion(sTargetFileName.c_str(), ver); } // 检查当前进程所使用的 VC 运行库版本 GDCPP_API int CheckVcRuntimeVersion(sVersion& Ver); GDCPP_API bool installVcRuntime(const fs::path& binPath, const sVersion& minVer); GDCPP_API int GetMotherboardAndBIOSInfo(std::wstring& Manufacturer, std::wstring& Model, std::wstring& BisoVer, bool needCoInit=false); GDCPP_API BOOL BrowseDirectory(HWND hwnd, LPTSTR lpszDir); GDCPP_API uint32_t crc32update_f4soft(uint32_t crc, uint32_t* pBuffer, uint32_t len); GDCPP_API uint32_t crc32calc_f4soft(uint32_t* pBuffer, uint32_t len); static inline bool createDirIfNotExist(fs::path& dir, spdlog::logger& log, const char* tip) { if (!fs::exists(dir)) { std::error_code _Ec; if (!fs::create_directory(dir, _Ec)) { log.error("创建{}目录{}失败: {}", tip, dir.u8string(), _Ec.message()); return false; } } return true; } static inline bool createDirIfNotExist(fs::path& dir, spdlog::logger& log, const std::string& tip) { if (!fs::exists(dir)) { std::error_code _Ec; if (!fs::create_directory(dir, _Ec)) { log.error("创建{}目录{}失败: {}", tip, dir.u8string(), _Ec.message()); return false; } } return true; }