diff --git a/Vivid2DRenderer/Vivid2DRenderer.vcxproj b/Vivid2DRenderer/Vivid2DRenderer.vcxproj index 58fecc4..9d8ce37 100644 --- a/Vivid2DRenderer/Vivid2DRenderer.vcxproj +++ b/Vivid2DRenderer/Vivid2DRenderer.vcxproj @@ -131,7 +131,7 @@ pch.h /utf-8 %(AdditionalOptions) stdcpp20 - 4828 + 4828;4251 Windows @@ -140,6 +140,26 @@ true false + + REM 目标路径:$(OutDir)include +setlocal enabledelayedexpansion + +REM 1. 复制项目根目录下的 .h 文件 +xcopy "$(ProjectDir)*.h" "$(OutDir)include" /Y /I + +REM 2. 递归复制 'systems\' 文件夹下的所有 .h 文件 +REM /E 确保复制子目录结构 +xcopy "$(ProjectDir)systems\*.h" "$(OutDir)include\systems" /E /Y /I + +REM --- 排除操作 --- +REM 3. 递归查找目标目录 "$(OutDir)include" 下的排除文件并删除 +for /R "$(OutDir)include" %%f in (framework.h pch.h) do ( + del /Q "%%f" +) + + + ==== Package include ==== + diff --git a/Vivid2DRenderer/pch.h b/Vivid2DRenderer/pch.h index 9660927..1698246 100644 --- a/Vivid2DRenderer/pch.h +++ b/Vivid2DRenderer/pch.h @@ -7,6 +7,17 @@ #ifndef PCH_H #define PCH_H +// 检查 VIVID_2D_MYDLL_API 宏是否已经被定义 +#ifdef VIVID_2D_MYDLL_API +// 如果已经定义,则先取消其定义(防止重复或冲突的定义) +#undef VIVID_2D_MYDLL_API +#endif + +// 强制将 VIVID_2D_MYDLL_API 宏定义为 __declspec(dllexport) +// 作用:告诉编译器,使用此宏标记的类、函数或变量,必须从当前 DLL 中导出。 +// 这是在编译 DLL 自身源代码时,确保其接口能够被外部应用程序使用的关键步骤。 +#define VIVID_2D_MYDLL_API __declspec(dllexport) + // 添加要在此处预编译的标头 #include "framework.h" diff --git a/Vivid2DRenderer/systems/RenderSystem.cpp b/Vivid2DRenderer/systems/RenderSystem.cpp index a7131f8..7a98ac4 100644 --- a/Vivid2DRenderer/systems/RenderSystem.cpp +++ b/Vivid2DRenderer/systems/RenderSystem.cpp @@ -138,7 +138,7 @@ void RenderSystem::_popState() { s_Logger->warn("popState called with empty state stack."); } } -int RenderSystem::getStateStackSize() { return s_StateStack.size(); } +size_t RenderSystem::getStateStackSize() { return s_StateStack.size(); } void RenderSystem::clearColor(float r, float g, float b, float a) { RENDER_SYSTEM_QUEUE_CALL(_clearColor, r, g, b, a); } void RenderSystem::_clearColor(float r, float g, float b, float a) { @@ -468,7 +468,7 @@ std::string RenderSystem::getGLErrorString(GLenum error) { int RenderSystem::getViewportWidth() { return s_ViewportWidth; } int RenderSystem::getViewportHeight() { return s_ViewportHeight; } glm::vec4 RenderSystem::getClearColor() { return s_ClearColorValue; } -int RenderSystem::getQueueSize() { +size_t RenderSystem::getQueueSize() { std::lock_guard lock(s_RenderQueueMutex); return s_RenderQueue.size(); } \ No newline at end of file diff --git a/Vivid2DRenderer/systems/RenderSystem.h b/Vivid2DRenderer/systems/RenderSystem.h index fbc0975..b2f7cf6 100644 --- a/Vivid2DRenderer/systems/RenderSystem.h +++ b/Vivid2DRenderer/systems/RenderSystem.h @@ -18,7 +18,7 @@ namespace spdlog { class logger; } -class RenderSystem { +class VIVID_2D_MYDLL_API RenderSystem { public: RenderSystem() = delete; ~RenderSystem() = delete; @@ -55,7 +55,7 @@ public: static void disable(GLenum capability); static void pushState(); static void popState(); - static int getStateStackSize(); + static size_t getStateStackSize(); static void clearColor(float r, float g, float b, float a); static void clear(GLbitfield mask); static void viewport(int x, int y, int width, int height); @@ -159,7 +159,7 @@ public: static int getViewportWidth(); static int getViewportHeight(); static glm::vec4 getClearColor(); - static int getQueueSize(); + static size_t getQueueSize(); private: struct RenderState; diff --git a/Vivid2DRenderer/systems/buffer/BufferBuilder.h b/Vivid2DRenderer/systems/buffer/BufferBuilder.h index 4c7afcf..edbed12 100644 --- a/Vivid2DRenderer/systems/buffer/BufferBuilder.h +++ b/Vivid2DRenderer/systems/buffer/BufferBuilder.h @@ -14,7 +14,7 @@ namespace Buffer { /** * @brief Ⱦ״̬ṹ */ - struct RenderState { + struct VIVID_2D_MYDLL_API RenderState { // Ⱦ״̬ (Ӧ Java е RenderState) unsigned int textureId = 0; int textureUnit = 0; @@ -55,7 +55,7 @@ namespace Buffer { /** * @brief ɵĻݽṹ */ - struct BuiltBuffer { + struct VIVID_2D_MYDLL_API BuiltBuffer { unsigned int vao; unsigned int vbo; int vertexCount; @@ -71,13 +71,13 @@ namespace Buffer { * @brief 򻯰 BufferBuilderڰһԻƼ塣 * ÿʽ float x, float y, float u, float v 4 float */ - class BufferBuilder { + class VIVID_2D_MYDLL_API BufferBuilder { private: static constexpr int COMPONENTS_PER_VERTEX = 4; // x,y,u,v std::vector array; - int size; // ʵʴ洢 float (array.size()) - int vertexCount; - int mode; // GL mode + size_t size; // ʵʴ洢 float (array.size()) + size_t vertexCount; + size_t mode; // GL mode RenderState renderState; bool stateSaved = false; public: @@ -119,7 +119,7 @@ namespace Buffer { */ void clear(); - int getVertexCount() const { + size_t getVertexCount() const { return vertexCount; } diff --git a/Vivid2DRenderer/systems/buffer/BufferUploader.h b/Vivid2DRenderer/systems/buffer/BufferUploader.h index bd72d2d..bd2b790 100644 --- a/Vivid2DRenderer/systems/buffer/BufferUploader.h +++ b/Vivid2DRenderer/systems/buffer/BufferUploader.h @@ -8,7 +8,7 @@ namespace Buffer { /** * @brief ϴӦȾ״̬ VAO ִлơ */ - class BufferUploader { + class VIVID_2D_MYDLL_API BufferUploader { public: /** * @brief ʹɫѹĻӹȨ diff --git a/Vivid2DRenderer/systems/buffer/Tesselator.h b/Vivid2DRenderer/systems/buffer/Tesselator.h index e670d65..61a9ddd 100644 --- a/Vivid2DRenderer/systems/buffer/Tesselator.h +++ b/Vivid2DRenderer/systems/buffer/Tesselator.h @@ -76,7 +76,7 @@ namespace Buffer { * 2. װ BufferBuilderṩһµļ幹ӿڡ * 3. end() ʱ BufferUploader ơ */ - class Tesselator { + class VIVID_2D_MYDLL_API Tesselator { private: static constexpr int DEFAULT_BUFFER_SIZE = 2097152; // 2MB floats diff --git a/Vivid2DRenderer/systems/sources/ShaderManagement.h b/Vivid2DRenderer/systems/sources/ShaderManagement.h index 3026497..cb75dd9 100644 --- a/Vivid2DRenderer/systems/sources/ShaderManagement.h +++ b/Vivid2DRenderer/systems/sources/ShaderManagement.h @@ -19,7 +19,7 @@ class TextShader; /** * @brief ɫ - ɫı롢Ӻ͹ (C++ ̬ʵ) */ -class ShaderManagement +class VIVID_2D_MYDLL_API ShaderManagement { private: // ֹʵ