add SingletonDll test do demonstrate the usage of singletons in a Dll

git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@565 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
syntheticpp 2006-02-28 10:29:06 +00:00
parent 4fbed79847
commit a3b09b5bed
12 changed files with 931 additions and 0 deletions

178
test/SingletonDll/Client.vcproj Executable file
View file

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="Client"
ProjectGUID="{237F4D1A-6301-4656-8F34-B0F6496E929F}"
RootNamespace="Client"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="-wd4996"
Optimization="0"
AdditionalIncludeDirectories="..\..\include"
PreprocessorDefinitions="EXPLICIT_EXPORT;LOKI_STATIC;FOO_DLL;SINGLETONDLL_DLL;WIN32;_DEBUG;_CONSOLE _SECURE_SCL=1"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="4"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)\..\bin\$(ProjectName).exe"
GenerateDebugInformation="true"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories="..\..\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
UsePrecompiledHeader="0"
WarningLevel="4"
Detect64BitPortabilityProblems="false"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath=".\client.cpp"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View file

@ -0,0 +1,39 @@

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Client", "Client.vcproj", "{237F4D1A-6301-4656-8F34-B0F6496E929F}"
ProjectSection(ProjectDependencies) = postProject
{0DCBE03A-DAC7-4669-B29B-102D8F563736} = {0DCBE03A-DAC7-4669-B29B-102D8F563736}
{42E13925-28CE-421B-993E-162510C90CD6} = {42E13925-28CE-421B-993E-162510C90CD6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Foo", "foo.vcproj", "{42E13925-28CE-421B-993E-162510C90CD6}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SingletonDll", "SingletonDll.vcproj", "{0DCBE03A-DAC7-4669-B29B-102D8F563736}"
ProjectSection(ProjectDependencies) = postProject
{42E13925-28CE-421B-993E-162510C90CD6} = {42E13925-28CE-421B-993E-162510C90CD6}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{237F4D1A-6301-4656-8F34-B0F6496E929F}.Debug|Win32.ActiveCfg = Debug|Win32
{237F4D1A-6301-4656-8F34-B0F6496E929F}.Debug|Win32.Build.0 = Debug|Win32
{237F4D1A-6301-4656-8F34-B0F6496E929F}.Release|Win32.ActiveCfg = Release|Win32
{237F4D1A-6301-4656-8F34-B0F6496E929F}.Release|Win32.Build.0 = Release|Win32
{42E13925-28CE-421B-993E-162510C90CD6}.Debug|Win32.ActiveCfg = Debug|Win32
{42E13925-28CE-421B-993E-162510C90CD6}.Debug|Win32.Build.0 = Debug|Win32
{42E13925-28CE-421B-993E-162510C90CD6}.Release|Win32.ActiveCfg = Release|Win32
{42E13925-28CE-421B-993E-162510C90CD6}.Release|Win32.Build.0 = Release|Win32
{0DCBE03A-DAC7-4669-B29B-102D8F563736}.Debug|Win32.ActiveCfg = Debug|Win32
{0DCBE03A-DAC7-4669-B29B-102D8F563736}.Debug|Win32.Build.0 = Debug|Win32
{0DCBE03A-DAC7-4669-B29B-102D8F563736}.Release|Win32.ActiveCfg = Release|Win32
{0DCBE03A-DAC7-4669-B29B-102D8F563736}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,223 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="SingletonDll"
ProjectGUID="{0DCBE03A-DAC7-4669-B29B-102D8F563736}"
RootNamespace="SingletonDll"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory="."
IntermediateDirectory="Release\"
ConfigurationType="1"
InheritedPropertySheets=""
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="-Zm200 -EHsc /wd4127 /wd4512"
Optimization="2"
InlineFunctionExpansion="1"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories=""
PreprocessorDefinitions="NDEBUG,_WINDOWS,WIN32,"
GeneratePreprocessedFile="0"
MinimalRebuild="true"
ExceptionHandling="1"
RuntimeLibrary="2"
BufferSecurityCheck="false"
AssemblerListingLocation="Release\"
ObjectFile="Release\"
ProgramDataBaseFileName=".\"
WarningLevel="4"
SuppressStartupBanner="true"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalDependencies="opengl32.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib imm32.lib winmm.lib wsock32.lib winspool.lib delayimp.lib"
OutputFile="Release\\SingletonDll.exe"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
IgnoreDefaultLibraryNames="msvcrt.lib"
DelayLoadDLLs="comdlg32.dll,oleaut32.dll,winmm.dll,wsock32.dll,winspool.dll"
GenerateDebugInformation="false"
ProgramDatabaseFile=""
SubSystem="2"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets=""
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="-Zm200 -EHsc /wd4127 /wd4512 "
Optimization="4"
AdditionalIncludeDirectories="..\..\include;."
PreprocessorDefinitions="EXPLICIT_EXPORT;LOKI_STATIC;FOO_DLL;SINGLETONDLL_MAKE_DLL;_WINDOWS;UNICODE;WIN32;_DEBUG"
GeneratePreprocessedFile="0"
MinimalRebuild="true"
ExceptionHandling="1"
RuntimeLibrary="3"
BufferSecurityCheck="false"
FloatingPointExceptions="true"
AssemblerListingLocation=""
ProgramDataBaseFileName="$(IntDir)\vc80SingletonDll.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
CallingConvention="0"
DisableSpecificWarnings="4251"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)\..\bin\$(ProjectName).dll"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath="..\..\include\loki\Singleton.h"
>
</File>
<File
RelativePath=".\singletondll.cpp"
>
</File>
<File
RelativePath=".\singletondll.h"
>
</File>
<File
RelativePath=".\singletondll_export.h"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

25
test/SingletonDll/client.cpp Executable file
View file

@ -0,0 +1,25 @@
////////////////////////////////////////////////////////////////////////////////
// The Loki Library
// Copyright (c) 2006 Peter Kümmel
// Permission to use, copy, modify, distribute and sell this software for any
// purpose is hereby granted without fee, provided that the above copyright
// notice appear in all copies and that both that copyright notice and this
// permission notice appear in supporting documentation.
// The author makes no representations about the
// suitability of this software for any purpose. It is provided "as is"
// without express or implied warranty.
////////////////////////////////////////////////////////////////////////////////
// $Header:
#include "singletondll.h"
#include "foo.h"
int main()
{
Foo& foo = Singleton<Foo>::Instance();
Foo& lokifoo = Loki::Singleton<Foo>::Instance();
foo.foo();
lokifoo.foo();
}

25
test/SingletonDll/foo.cpp Executable file
View file

@ -0,0 +1,25 @@
////////////////////////////////////////////////////////////////////////////////
// The Loki Library
// Copyright (c) 2006 Peter Kümmel
// Permission to use, copy, modify, distribute and sell this software for any
// purpose is hereby granted without fee, provided that the above copyright
// notice appear in all copies and that both that copyright notice and this
// permission notice appear in supporting documentation.
// The author makes no representations about the
// suitability of this software for any purpose. It is provided "as is"
// without express or implied warranty.
////////////////////////////////////////////////////////////////////////////////
// $Header:
#include "foo.h"
#include <iostream>
Foo::Foo()
{
}
void Foo::foo()
{
std::cout << "\nFoo:foo() called, this: " << this << "\n";
}

30
test/SingletonDll/foo.h Executable file
View file

@ -0,0 +1,30 @@
////////////////////////////////////////////////////////////////////////////////
// The Loki Library
// Copyright (c) 2006 Peter Kümmel
// Permission to use, copy, modify, distribute and sell this software for any
// purpose is hereby granted without fee, provided that the above copyright
// notice appear in all copies and that both that copyright notice and this
// permission notice appear in supporting documentation.
// The author makes no representations about the
// suitability of this software for any purpose. It is provided "as is"
// without express or implied warranty.
////////////////////////////////////////////////////////////////////////////////
#ifndef LOKI_FOO_H
#define LOKI_FOO_H
// $Header:
#include "foo_export.h"
class FOO_EXPORT Foo
{
public:
Foo();
void foo();
};
#endif

219
test/SingletonDll/foo.vcproj Executable file
View file

@ -0,0 +1,219 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="Foo"
ProjectGUID="{42E13925-28CE-421B-993E-162510C90CD6}"
RootNamespace="Foo"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory="."
IntermediateDirectory="Release\"
ConfigurationType="1"
InheritedPropertySheets=""
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="-Zm200 -EHsc /wd4127 /wd4512"
Optimization="2"
InlineFunctionExpansion="1"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories=""
PreprocessorDefinitions="NDEBUG,_WINDOWS,UNICODE,WIN32"
GeneratePreprocessedFile="0"
MinimalRebuild="true"
ExceptionHandling="1"
RuntimeLibrary="2"
BufferSecurityCheck="false"
AssemblerListingLocation="Release\"
ObjectFile="Release\"
ProgramDataBaseFileName=".\"
WarningLevel="4"
SuppressStartupBanner="true"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalDependencies="opengl32.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib imm32.lib winmm.lib wsock32.lib winspool.lib delayimp.lib"
OutputFile="Release\\Foo.exe"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
IgnoreDefaultLibraryNames="msvcrt.lib"
DelayLoadDLLs="comdlg32.dll,oleaut32.dll,winmm.dll,wsock32.dll,winspool.dll"
GenerateDebugInformation="false"
ProgramDatabaseFile=""
SubSystem="2"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets=""
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="-Zm200 -EHsc /wd4127 /wd4512 "
Optimization="4"
AdditionalIncludeDirectories=".;..\..\include"
PreprocessorDefinitions="EXPLICIT_EXPORT;LOKI_STATIC;FOO_MAKE_DLL;_WINDOWS;UNICODE;WIN32;_DEBUG"
GeneratePreprocessedFile="0"
MinimalRebuild="true"
ExceptionHandling="1"
RuntimeLibrary="3"
BufferSecurityCheck="false"
FloatingPointModel="0"
AssemblerListingLocation=""
ProgramDataBaseFileName="$(IntDir)\vc80foo.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
CallingConvention="0"
DisableSpecificWarnings="4251"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)\..\bin\$(ProjectName).dll"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath=".\foo.cpp"
>
</File>
<File
RelativePath=".\foo.h"
>
</File>
<File
RelativePath=".\foo_export.h"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

44
test/SingletonDll/foo_export.h Executable file
View file

@ -0,0 +1,44 @@
////////////////////////////////////////////////////////////////////////////////
// The Loki Library
// Copyright (c) 2006 Peter Kümmel
// Permission to use, copy, modify, distribute and sell this software for any
// purpose is hereby granted without fee, provided that the above copyright
// notice appear in all copies and that both that copyright notice and this
// permission notice appear in supporting documentation.
// The author makes no representations about the
// suitability of this software for any purpose. It is provided "as is"
// without express or implied warranty.
////////////////////////////////////////////////////////////////////////////////
#ifndef FOO_FOO_EXPORT_H
#define FOO_FOO_EXPORT_H
#include <loki/LokiExport.h>
#if (defined(FOO_MAKE_DLL) && defined(FOO_DLL)) || \
(defined(FOO_MAKE_DLL) && defined(FOO_STATIC)) || \
(defined(FOO_DLL) && defined(FOO_STATIC))
#error export macro error: you could not build AND use the library
#endif
#ifdef FOO_MAKE_DLL
#define FOO_EXPORT LOKI_EXPORT_SPEC //__declspec(dllexport)
#endif
#ifdef FOO_DLL
#define FOO_EXPORT LOKI_IMPORT_SPEC //__declspec(dllimport)
#endif
#ifdef FOO_STATIC
#define FOO_EXPORT
#endif
#if !defined(FOO_EXPORT) && !defined(EXPLICIT_EXPORT)
#define FOO_EXPORT
#endif
#ifndef FOO_EXPORT
#error export macro error: FOO_EXPORT was not defined, disable EXPLICIT_EXPORT or define a export specification
#endif
#endif

24
test/SingletonDll/make.msvc.bat Executable file
View file

@ -0,0 +1,24 @@
:: build Foo.dll
cl -c -DFOO_MAKE_DLL -Zm200 -O2 -DNDEBUG -MT -D_WINDLL -EHsc -GR -W4 -wd4251 -I"." -I"..\..\include" Foo.cpp
link /NOLOGO /DLL /OUT:"Foo.dll" Foo.obj
:: build SingletonDll.dll
cl -c -DSINGLETONDLL_MAKE_DLL -DFOO_DLL -Zm200 -O2 -DNDEBUG -MT -D_WINDLL -EHsc -GR -W4 -wd4251 -I"." -I"..\..\include" SingletonDll.cpp
link /NOLOGO /DLL /OUT:"SingletonDll.dll" SingletonDll.obj foo.lib
:: build Client.exe
cl -c -DSINGLETONDLL_DLL -DFOO_DLL -Zm200 -O2 -DNDEBUG -MT -D_WINDLL -EHsc -GR -W4 -wd4251 -I"." -I"..\..\include" client.cpp
link /NOLOGO /SUBSYSTEM:CONSOLE /OUT:"Client.exe" Client.obj foo.lib SingletonDll.lib
del *.obj
del *.lib
del *.exp

View file

@ -0,0 +1,38 @@
////////////////////////////////////////////////////////////////////////////////
// The Loki Library
// Copyright (c) 2006 Peter Kümmel
// Permission to use, copy, modify, distribute and sell this software for any
// purpose is hereby granted without fee, provided that the above copyright
// notice appear in all copies and that both that copyright notice and this
// permission notice appear in supporting documentation.
// The author makes no representations about the
// suitability of this software for any purpose. It is provided "as is"
// without express or implied warranty.
////////////////////////////////////////////////////////////////////////////////
// $Header:
#include <singletondll.h>
#include "foo.h"
typedef Loki::SingletonHolder<Foo> FooSingleton;
Foo& Singleton<Foo>::Instance()
{
return FooSingleton::Instance();
};
LOKI_SINGLETON_INSTANCE_DEFINITION(FooSingleton)
/*
Foo& Loki::Singleton<Foo>::Instance()
{
return FooSingleton::Instance();
};
*/

View file

@ -0,0 +1,42 @@
////////////////////////////////////////////////////////////////////////////////
// The Loki Library
// Copyright (c) 2006 Peter Kümmel
// Permission to use, copy, modify, distribute and sell this software for any
// purpose is hereby granted without fee, provided that the above copyright
// notice appear in all copies and that both that copyright notice and this
// permission notice appear in supporting documentation.
// The author makes no representations about the
// suitability of this software for any purpose. It is provided "as is"
// without express or implied warranty.
////////////////////////////////////////////////////////////////////////////////
#ifndef LOKI_SINGLETONDLL_H
#define LOKI_SINGLETONDLL_H
// $Header:
#include "singletondll_export.h"
class Foo;
// Use the predefined Loki::Singleton
// and export Loki::Singleton<Foo>
#include <loki/Singleton.h>
template class SINGLETONDLL_EXPORT Loki::Singleton<Foo>;
// declare the Singleton template by yourself
// and export Singleton<Foo>
// so the singleton is not in the Loki namespace
template<class T>
class Singleton
{
public:
static T& Instance();
};
template class SINGLETONDLL_EXPORT Singleton<Foo>;
#endif

View file

@ -0,0 +1,44 @@
////////////////////////////////////////////////////////////////////////////////
// The Loki Library
// Copyright (c) 2006 Peter Kümmel
// Permission to use, copy, modify, distribute and sell this software for any
// purpose is hereby granted without fee, provided that the above copyright
// notice appear in all copies and that both that copyright notice and this
// permission notice appear in supporting documentation.
// The author makes no representations about the
// suitability of this software for any purpose. It is provided "as is"
// without express or implied warranty.
////////////////////////////////////////////////////////////////////////////////
#ifndef SINGLETONDLL_SINGLETONDLL_EXPORT_H
#define SINGLETONDLL_SINGLETONDLL_EXPORT_H
#include <loki/LokiExport.h>
#if (defined(SINGLETONDLL_MAKE_DLL) && defined(SINGLETONDLL_DLL)) || \
(defined(SINGLETONDLL_MAKE_DLL) && defined(SINGLETONDLL_STATIC)) || \
(defined(SINGLETONDLL_DLL) && defined(SINGLETONDLL_STATIC))
#error export macro error: you could not build AND use the library
#endif
#ifdef SINGLETONDLL_MAKE_DLL
#define SINGLETONDLL_EXPORT LOKI_EXPORT_SPEC //__declspec(dllexport)
#endif
#ifdef SINGLETONDLL_DLL
#define SINGLETONDLL_EXPORT LOKI_IMPORT_SPEC //__declspec(dllimport)
#endif
#ifdef SINGLETONDLL_STATIC
#define SINGLETONDLL_EXPORT
#endif
#if !defined(SINGLETONDLL_EXPORT) && !defined(EXPLICIT_EXPORT)
#define SINGLETONDLL_EXPORT
#endif
#ifndef SINGLETONDLL_EXPORT
#error export macro error: SINGLETONDLL_EXPORT was not defined, disable EXPLICIT_EXPORT or define a export specification
#endif
#endif