From 557c3f164d736b620b81443c828b3cd1979780b2 Mon Sep 17 00:00:00 2001 From: HeZongLun <13425468+hezonglun@user.noreply.gitee.com> Date: Fri, 14 Nov 2025 21:00:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E4=B8=94=E5=B0=BD=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E5=9C=B0=E4=B8=BA=20Windows=20=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E7=AC=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Linux.mk | 0 .../Sources/HTTPClient.h | 31 ++- .../Sources/HTTPServer.h | 27 +- .../Sources/SerialPort.cpp | 28 +- .../Sources/SerialPort.h | 37 ++- .../Sources/StaticWebServer.h | 27 +- .../Tests/ModuleUnitTestFile.cpp | 10 +- NahidaProject.Console/Sources/ChooseDialog.h | 22 +- .../Sources/CommandLineParser.h | 29 ++- .../Sources/ConsoleColor.cpp | 240 ++++++++---------- NahidaProject.Console/Sources/ConsoleColor.h | 139 +++++----- NahidaProject.Console/Sources/TablePrint.h | 13 +- .../Tests/ModuleUnitTestFile.cpp | 115 ++++----- NahidaProject.Database/CMakeLists.txt | 4 + NahidaProject.Database/Sources/ODBC.h | 31 ++- NahidaProject.Database/Sources/SQLite.h | 27 +- .../Tests/ModuleUnitTestFile.cpp | 6 +- NahidaProject.Generic/Sources/BloomFilter.h | 16 +- NahidaProject.Generic/Sources/Date.h | 23 +- NahidaProject.Generic/Sources/DateTime.h | 23 +- .../Sources/DynamicLibraryLoader.cpp | 2 +- .../Sources/DynamicLibraryLoader.h | 25 +- NahidaProject.Generic/Sources/FileHelper.h | 21 +- NahidaProject.Generic/Sources/Logger.h | 14 +- NahidaProject.Generic/Sources/NahidaProject.h | 13 +- NahidaProject.Generic/Sources/SnowFlake.h | 23 +- NahidaProject.Generic/Sources/SortModule.h | 13 +- .../Sources/StringValidator.h | 27 +- NahidaProject.Generic/Sources/Time.h | 21 +- NahidaProject.Generic/Sources/TimerGroup.h | 27 +- .../Tests/ModuleUnitTestFile.cpp | 26 +- NahidaProject.HashAlgorithm/Sources/Base64.h | 8 +- NahidaProject.HashAlgorithm/Sources/MD5.h | 8 +- NahidaProject.HashAlgorithm/Sources/SHA256.h | 8 +- .../Tests/ModuleUnitTestFile.cpp | 8 +- .../Sources/BigInteger.h | 14 +- NahidaProject.Mathematics/Sources/Complex.h | 23 +- NahidaProject.Mathematics/Sources/Matrix.h | 23 +- .../Sources/RandomGenerator.h | 13 +- .../Sources/Statistics.h | 13 +- NahidaProject.Mathematics/Sources/Vector.h | 12 +- .../Tests/ModuleUnitTestFile.cpp | 12 +- NahidaProject.Other/Sources/CowSay.h | 13 +- .../Tests/ModuleUnitTestFile.cpp | 4 +- NahidaProject.Serialization/Sources/BSON.h | 39 ++- NahidaProject.Serialization/Sources/CSV.h | 20 +- .../Sources/INI/INIReader.h | 12 +- .../Sources/INI/INIWriter.h | 12 +- .../Sources/JSON/JSON.h | 16 +- .../Sources/JSON/JSONParser.h | 8 +- .../Sources/JSON/JSONWriter.h | 25 +- .../Sources/MessagePack.h | 41 ++- .../Sources/XML/XMLComment.h | 13 + .../Sources/XML/XMLDocument.h | 21 +- .../Sources/XML/XMLElement.h | 13 + .../Sources/XML/XMLNode.h | 13 + .../Sources/XML/XMLParseException.h | 21 +- .../Sources/XML/XMLParser.h | 21 +- .../Sources/XML/XMLText.h | 13 + .../Sources/XML/XMLWriter.h | 8 +- .../Sources/YAML/YAML.h | 31 ++- .../Sources/YAML/YAMLWriter.h | 23 +- .../Tests/ModuleUnitTestFile.cpp | 30 +-- NahidaProject.Thread/Sources/EventBus.h | 22 +- NahidaProject.Thread/Sources/MemoryPool.h | 14 +- NahidaProject.Thread/Sources/SignalAndSlot.h | 29 ++- NahidaProject.Thread/Sources/TaskTimer.h | 10 +- NahidaProject.Thread/Sources/ThreadPool.h | 15 +- NahidaProject.Thread/Sources/TimingWheel.h | 10 +- .../Tests/ModuleUnitTestFile.cpp | 9 +- Windows.mk | 0 71 files changed, 1167 insertions(+), 541 deletions(-) create mode 100644 Linux.mk create mode 100644 Windows.mk diff --git a/Linux.mk b/Linux.mk new file mode 100644 index 0000000..e69de29 diff --git a/NahidaProject.Communication/Sources/HTTPClient.h b/NahidaProject.Communication/Sources/HTTPClient.h index abc9519..9337d4f 100644 --- a/NahidaProject.Communication/Sources/HTTPClient.h +++ b/NahidaProject.Communication/Sources/HTTPClient.h @@ -1,10 +1,31 @@ -#include +/* +Copyright (c) 2025 HeZongLun +NahidaProject is licensed under Mulan PSL v2. +You can use this software according to the terms and conditions of the Mulan +PSL v2. +You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PSL v2 for more details. +*/ + +#pragma once + +#include #include #include #include #include #include +#ifdef _WIN32 +#define ExportSymbol __declspec(dllexport) +#else +#define ExportSymbol +#endif + #ifdef _WIN32 #include #include @@ -21,9 +42,9 @@ namespace NahidaProject { - enum class ClientHTTPMethod { GET, POST, PUT, DELETE_METHOD, HEAD, OPTIONS}; + enum class ExportSymbol ClientHTTPMethod { GET, POST, PUT, DELETE_METHOD, HEAD, OPTIONS}; - enum class ClientHTTPStatus { + enum class ExportSymbol ClientHTTPStatus { OK = 200, CREATED = 201, ACCEPTED = 202, @@ -37,7 +58,7 @@ namespace NahidaProject { SERVICE_UNAVAILABLE = 503 }; - struct ClientHTTPResponse { + struct ExportSymbol ClientHTTPResponse { int statusCode; std::string statusMessage; std::map headers; @@ -46,7 +67,7 @@ namespace NahidaProject { ClientHTTPResponse() : statusCode(0) {} }; - class HTTPClient { + class ExportSymbol HTTPClient { private: std::string baseUrl; std::map defaultHeaders; diff --git a/NahidaProject.Communication/Sources/HTTPServer.h b/NahidaProject.Communication/Sources/HTTPServer.h index 72d5dca..bfeec49 100644 --- a/NahidaProject.Communication/Sources/HTTPServer.h +++ b/NahidaProject.Communication/Sources/HTTPServer.h @@ -1,4 +1,19 @@ -#include +/* +Copyright (c) 2025 HeZongLun +NahidaProject is licensed under Mulan PSL v2. +You can use this software according to the terms and conditions of the Mulan +PSL v2. +You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PSL v2 for more details. +*/ + +#pragma once + +#include #include #include #include @@ -8,6 +23,12 @@ #include #include +#ifdef _WIN32 +#define ExportSymbol __declspec(dllexport) +#else +#define ExportSymbol +#endif + #ifdef _WIN32 #include #include @@ -21,7 +42,7 @@ #endif namespace NahidaProject { - class HTTPServer { + class ExportSymbol HTTPServer { public: // HTTP请求结构 struct HTTPRequest { @@ -34,7 +55,7 @@ namespace NahidaProject { }; // HTTP响应结构 - struct HTTPResponse { + struct ExportSymbol HTTPResponse { int statusCode = 200; std::string statusText = "OK"; std::map headers; diff --git a/NahidaProject.Communication/Sources/SerialPort.cpp b/NahidaProject.Communication/Sources/SerialPort.cpp index 3a6320b..b541a6b 100644 --- a/NahidaProject.Communication/Sources/SerialPort.cpp +++ b/NahidaProject.Communication/Sources/SerialPort.cpp @@ -194,25 +194,25 @@ NahidaProject::SerialPort::ErrorCode NahidaProject::SerialPort::ConfigureSerialP // 设置波特率 speed_t baud = B9600; switch (baudRate_) { - case BaudRate::BAUD_110: baud = B110; break; - case BaudRate::BAUD_300: baud = B300; break; - case BaudRate::BAUD_600: baud = B600; break; - case BaudRate::BAUD_1200: baud = B1200; break; - case BaudRate::BAUD_2400: baud = B2400; break; - case BaudRate::BAUD_4800: baud = B4800; break; - case BaudRate::BAUD_9600: baud = B9600; break; - case BaudRate::BAUD_19200: baud = B19200; break; - case BaudRate::BAUD_38400: baud = B38400; break; - case BaudRate::BAUD_57600: baud = B57600; break; - case BaudRate::BAUD_115200: baud = B115200; break; + case BaudRate::BAUDRATE_110: baud = B110; break; + case BaudRate::BAUDRATE_300: baud = B300; break; + case BaudRate::BAUDRATE_600: baud = B600; break; + case BaudRate::BAUDRATE_1200: baud = B1200; break; + case BaudRate::BAUDRATE_2400: baud = B2400; break; + case BaudRate::BAUDRATE_4800: baud = B4800; break; + case BaudRate::BAUDRATE_9600: baud = B9600; break; + case BaudRate::BAUDRATE_19200: baud = B19200; break; + case BaudRate::BAUDRATE_38400: baud = B38400; break; + case BaudRate::BAUDRATE_57600: baud = B57600; break; + case BaudRate::BAUDRATE_115200: baud = B115200; break; #ifdef B230400 - case BaudRate::BAUD_230400: baud = B230400; break; + case BaudRate::BAUDRATE_230400: baud = B230400; break; #endif #ifdef B460800 - case BaudRate::BAUD_460800: baud = B460800; break; + case BaudRate::BAUDRATE_460800: baud = B460800; break; #endif #ifdef B921600 - case BaudRate::BAUD_921600: baud = B921600; break; + case BaudRate::BAUDRATE_921600: baud = B921600; break; #endif default: baud = B9600; break; } diff --git a/NahidaProject.Communication/Sources/SerialPort.h b/NahidaProject.Communication/Sources/SerialPort.h index d113d19..1612292 100644 --- a/NahidaProject.Communication/Sources/SerialPort.h +++ b/NahidaProject.Communication/Sources/SerialPort.h @@ -1,4 +1,17 @@ -#pragma once +/* +Copyright (c) 2025 HeZongLun +NahidaProject is licensed under Mulan PSL v2. +You can use this software according to the terms and conditions of the Mulan +PSL v2. +You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PSL v2 for more details. +*/ + +#pragma once #include #include @@ -8,10 +21,16 @@ #include #include #include -#pragma comment(lib, "kernel32.lib") + +#ifdef _WIN32 +#define ExportSymbol __declspec(dllexport) +#else +#define ExportSymbol +#endif #ifdef _WIN32 #include + #pragma comment(lib, "kernel32.lib") #else #include #include @@ -21,10 +40,10 @@ #endif namespace NahidaProject { - class SerialPort { + class ExportSymbol SerialPort { public: // 波特率枚举 - enum class BaudRate { + enum class ExportSymbol BaudRate { BAUDRATE_110 = 110, BAUDRATE_300 = 300, BAUDRATE_600 = 600, @@ -43,7 +62,7 @@ namespace NahidaProject { }; // 数据位枚举 - enum class DataBits { + enum class ExportSymbol DataBits { DATA_5 = 5, DATA_6 = 6, DATA_7 = 7, @@ -51,14 +70,14 @@ namespace NahidaProject { }; // 停止位枚举 - enum class StopBits { + enum class ExportSymbol StopBits { STOP_1 = 1, // 1个停止位 STOP_1_5 = 15, // 1.5个停止位 STOP_2 = 2 // 2个停止位 }; // 校验位枚举 - enum class Parity { + enum class ExportSymbol Parity { NONE, // 无校验 ODD, // 奇校验 EVEN, // 偶校验 @@ -67,14 +86,14 @@ namespace NahidaProject { }; // 流控制枚举 - enum class FlowControl { + enum class ExportSymbol FlowControl { NONE, // 无流控制 HARDWARE, // 硬件流控制 SOFTWARE // 软件流控制 }; // 错误码枚举 - enum class ErrorCode { + enum class ExportSymbol ErrorCode { SUCCESS = 0, INVALID_PARAMETER, PORT_NOT_OPEN, diff --git a/NahidaProject.Communication/Sources/StaticWebServer.h b/NahidaProject.Communication/Sources/StaticWebServer.h index 48972b6..837a128 100644 --- a/NahidaProject.Communication/Sources/StaticWebServer.h +++ b/NahidaProject.Communication/Sources/StaticWebServer.h @@ -1,13 +1,34 @@ -#include +/* +Copyright (c) 2025 HeZongLun +NahidaProject is licensed under Mulan PSL v2. +You can use this software according to the terms and conditions of the Mulan +PSL v2. +You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PSL v2 for more details. +*/ + +#pragma once + +#include #include #include #include #include +#ifdef _WIN32 +#define ExportSymbol __declspec(dllexport) +#else +#define ExportSymbol +#endif + namespace NahidaProject { - class StaticWebServer { + class ExportSymbol StaticWebServer { public: - struct StaticWebServerHTTPRequest { + struct ExportSymbol StaticWebServerHTTPRequest { std::string method; std::string url; std::string version; diff --git a/NahidaProject.Communication/Tests/ModuleUnitTestFile.cpp b/NahidaProject.Communication/Tests/ModuleUnitTestFile.cpp index a18dee0..0df0401 100644 --- a/NahidaProject.Communication/Tests/ModuleUnitTestFile.cpp +++ b/NahidaProject.Communication/Tests/ModuleUnitTestFile.cpp @@ -1,9 +1,9 @@ -# include "..\..\NahidaProject.UnitTest\Sources\NahidaUnitTest.h" +# include "../../NahidaProject.UnitTest/Sources/NahidaUnitTest.h" -#include "..\Sources\HTTPClient.h" -#include "..\Sources\HTTPServer.h" -#include "..\Sources\SerialPort.h" -#include "..\Sources\StaticWebServer.h" +#include "../Sources/HTTPClient.h" +#include "../Sources/HTTPServer.h" +#include "../Sources/SerialPort.h" +#include "../Sources/StaticWebServer.h" Test(HTTPClientTest) { try { diff --git a/NahidaProject.Console/Sources/ChooseDialog.h b/NahidaProject.Console/Sources/ChooseDialog.h index d5bacc6..9f3f18a 100644 --- a/NahidaProject.Console/Sources/ChooseDialog.h +++ b/NahidaProject.Console/Sources/ChooseDialog.h @@ -13,6 +13,12 @@ See the Mulan PSL v2 for more details. #pragma once +#ifdef _WIN32 +#define ExportSymbol __declspec(dllexport) +#else +#define ExportSymbol +#endif + #include #include #include @@ -40,7 +46,7 @@ const std::wstring NO_INSTRUCTION = L""; namespace NahidaProject { namespace ChooseDialog { - class __declspec(dllexport) Option { + class ExportSymbol Option { public: BOOL IsSelected() const { return _selected; @@ -76,7 +82,7 @@ namespace NahidaProject { }; - struct __declspec(dllexport) MenuState { + struct ExportSymbol MenuState { std::vector