diff options
author | Ash Wolf <ninji@wuffs.org> | 2023-07-10 02:10:20 +0100 |
---|---|---|
committer | Ash Wolf <ninji@wuffs.org> | 2023-07-10 02:10:20 +0100 |
commit | 0f3cba6fcea0ffd511dfe3275d57a5b9e69be5be (patch) | |
tree | 7f9caca3a050552001e87fe5b6bf7d7149afaf1c /src/Plugins/Food/Burger/Burger.cpp | |
parent | bd99f088a53686119c9bbfc0baf34128cd0eda2f (diff) | |
download | t2win-0f3cba6fcea0ffd511dfe3275d57a5b9e69be5be.tar.gz t2win-0f3cba6fcea0ffd511dfe3275d57a5b9e69be5be.zip |
build a barely-tested Burger plugin
Diffstat (limited to 'src/Plugins/Food/Burger/Burger.cpp')
-rw-r--r-- | src/Plugins/Food/Burger/Burger.cpp | 63 |
1 files changed, 56 insertions, 7 deletions
diff --git a/src/Plugins/Food/Burger/Burger.cpp b/src/Plugins/Food/Burger/Burger.cpp index e18f508..2e9f301 100644 --- a/src/Plugins/Food/Burger/Burger.cpp +++ b/src/Plugins/Food/Burger/Burger.cpp @@ -1,5 +1,9 @@ +// Burger.cpp : Defines the initialization routines for the DLL. +// + +#include "stdafx.h" #include "Burger.h" -#include "T2PluginSpecifier.h" +#include "../../../T2DLL/T2PluginSpecifier.h" #include "../Common/FoodDef.h" #include "../Common/FoodPlugin.h" @@ -9,27 +13,70 @@ static char THIS_FILE[] = __FILE__; #endif +// +// Note! +// +// If this DLL is dynamically linked against the MFC +// DLLs, any functions exported from this DLL which +// call into MFC must have the AFX_MANAGE_STATE macro +// added at the very beginning of the function. +// +// For example: +// +// extern "C" BOOL PASCAL EXPORT ExportedFunction() +// { +// AFX_MANAGE_STATE(AfxGetStaticModuleState()); +// // normal function body here +// } +// +// It is very important that this macro appear in each +// function, prior to any calls into MFC. This means that +// it must appear as the first statement within the +// function, even before any object variable declarations +// as their constructors may generate calls into the MFC +// DLL. +// +// Please see MFC Technical Notes 33 and 58 for additional +// details. +// + +///////////////////////////////////////////////////////////////////////////// +// CBurgerApp + BEGIN_MESSAGE_MAP(CBurgerApp, CWinApp) + //{{AFX_MSG_MAP(CBurgerApp) + // NOTE - the ClassWizard will add and remove mapping macros here. + // DO NOT EDIT what you see in these blocks of generated code! + //}}AFX_MSG_MAP END_MESSAGE_MAP() -CBurgerApp::CBurgerApp() { +///////////////////////////////////////////////////////////////////////////// +// CBurgerApp construction + +CBurgerApp::CBurgerApp() +{ } +///////////////////////////////////////////////////////////////////////////// +// The one and only CBurgerApp object + CBurgerApp theApp; FoodPlugin *sFoodPlugin; FoodDef *sFoodDef; -extern "C" void *AFX_EXT_API CALLBACK ConstructProgramPlugin(T2PluginSpecifier *inSpecifier) { +#pragma comment(linker, "/export:ConstructProgramPlugin=_ConstructProgramPlugin@4") +extern "C" void *CALLBACK ConstructProgramPlugin(T2PluginSpecifier *inSpecifier) { if (!sFoodPlugin) { #line 88 - sFoodPlugin = new FoodPlugin('TnPl', inSpecifier); + sFoodPlugin = new FoodPlugin('TnPl', *inSpecifier); } return sFoodPlugin; } -extern "C" void *AFX_EXT_API CALLBACK ConstructTemplatePlugin(T2PluginSpecifier *inSpecifier, CResFile *inResFile, T2WorldDef *inWorldDef, T2TenantPlugin *inPlugin) { +#pragma comment(linker, "/export:ConstructTemplatePlugin=_ConstructTemplatePlugin@16") +extern "C" void *CALLBACK ConstructTemplatePlugin(T2PluginSpecifier *inSpecifier, CResFile *inResFile, T2WorldDef *inWorldDef, T2TenantPlugin *inPlugin) { if (!sFoodDef) { #line 101 sFoodDef = new FoodDef('TnDf', *inSpecifier, inResFile, inWorldDef, inPlugin); @@ -38,7 +85,8 @@ extern "C" void *AFX_EXT_API CALLBACK ConstructTemplatePlugin(T2PluginSpecifier return sFoodDef; } -extern "C" void *AFX_EXT_API CALLBACK DestructProgramPlugin() { +#pragma comment(linker, "/export:DestructProgramPlugin=_DestructProgramPlugin@0") +extern "C" void *CALLBACK DestructProgramPlugin() { delete sFoodPlugin; sFoodPlugin = NULL; @@ -48,7 +96,8 @@ extern "C" void *AFX_EXT_API CALLBACK DestructProgramPlugin() { return NULL; } -extern "C" T2PluginSpecifier *AFX_EXT_API CALLBACK GetAttr(T2PluginSpecifier *inSpecifier, CResFile *inResFile, T2WorldDef *inWorldDef, T2TenantPlugin *inPlugin) { +#pragma comment(linker, "/export:GetAttr=_GetAttr@16") +extern "C" T2PluginSpecifier *CALLBACK GetAttr(T2PluginSpecifier *inSpecifier, CResFile *inResFile, T2WorldDef *inWorldDef, T2TenantPlugin *inPlugin) { #line 120 T2PluginSpecifier *specifier = new T2PluginSpecifier; specifier->mPluginName = "Burgar"; |