Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将多个实现提取到静态库中 我有一个(仍然)用VisualStudio构建的C++小游戏引擎。游戏引擎支持DirectX和OpenGL,但这并不重要。重要的是我有一些抽象基类的具体实现(例如,作为内核类的子类的DXKernel和OGLKernel)。因此,DXKernel和OGLKernel类与一些特定于平台的代码有一个公共接口。内核类本身确实有一些实现,因此它不是一个纯接口,这些方法应该由实现继承_C++_Visual Studio 2010_Static Libraries - Fatal编程技术网

将多个实现提取到静态库中 我有一个(仍然)用VisualStudio构建的C++小游戏引擎。游戏引擎支持DirectX和OpenGL,但这并不重要。重要的是我有一些抽象基类的具体实现(例如,作为内核类的子类的DXKernel和OGLKernel)。因此,DXKernel和OGLKernel类与一些特定于平台的代码有一个公共接口。内核类本身确实有一些实现,因此它不是一个纯接口,这些方法应该由实现继承

将多个实现提取到静态库中 我有一个(仍然)用VisualStudio构建的C++小游戏引擎。游戏引擎支持DirectX和OpenGL,但这并不重要。重要的是我有一些抽象基类的具体实现(例如,作为内核类的子类的DXKernel和OGLKernel)。因此,DXKernel和OGLKernel类与一些特定于平台的代码有一个公共接口。内核类本身确实有一些实现,因此它不是一个纯接口,这些方法应该由实现继承,c++,visual-studio-2010,static-libraries,C++,Visual Studio 2010,Static Libraries,现在,据我所知,最好将具体实现从主项目中移除,并创建静态库来链接主项目,具体取决于我编译的平台。因此,如果我是为OSX编译,我只想包括OpenGL实现。如果我是为Windows编译,我希望同时包含DirectX和OpenGL实现 Visual Studio布局现在如下所示: Solution Project Header files Core DX DXKernel.h

现在,据我所知,最好将具体实现从主项目中移除,并创建静态库来链接主项目,具体取决于我编译的平台。因此,如果我是为OSX编译,我只想包括OpenGL实现。如果我是为Windows编译,我希望同时包含DirectX和OpenGL实现

Visual Studio布局现在如下所示:

Solution
    Project
        Header files
            Core
                DX
                    DXKernel.h    <-- DirectX implementation of abstract methods
                    ...
                OGL
                    OGLKernel.h   <-- OpenGL implementation of abstract methods
                    ...

                Kernel.h          <-- abstract class(es)
                ...
            ...
        Source files
            Core
                DX
                    DXKernel.cpp
                    ...
                OGL
                    OGLKernel.cpp
                    ...

                Kernel.cpp
                ...
            ...
解决方案
项目
头文件
核心
DX

DXKernel.h让我回答我自己的问题。我对这个主题做了更多的研究,发现静态库要求使用的头在主项目中,而这些头的.cpp实现在静态库中

因此,项目的来源如下所示:

Solution
    Project
        Header files
            Core
                DX
                    DXKernel.h    <-- DirectX implementation of abstract methods
                    ...
                OGL
                    OGLKernel.h   <-- OpenGL implementation of abstract methods
                    ...

                Kernel.h          <-- abstract class(es)
                ...
            ...
        Source files
            Core
                DX
                    DXKernel.cpp
                    ...
                OGL
                    OGLKernel.cpp
                    ...

                Kernel.cpp
                ...
            ...
解决方案
主要项目
头文件
核心
DX
DXKernel.h