本文整理汇总了C++中PluginLoader::getFunctionAddress方法的典型用法代码示例。如果您正苦于以下问题:C++ PluginLoader::getFunctionAddress方法的具体用法?C++ PluginLoader::getFunctionAddress怎么用?C++ PluginLoader::getFunctionAddress使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PluginLoader
的用法示例。
在下文中一共展示了PluginLoader::getFunctionAddress方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadPlugins
/// Indexes all plugins found in /Plugins
void GameCore::loadPlugins()
{
typedef PluginSDK::Types(*getPluginTypeFunc)();
typedef ExtensionScripting*(*createScriptEnvironmentFunc)(GameCore*);
typedef ExtensionAudio*(*createAudioEnvironmentFunc)(GameCore*);
StringList dll_list = FileSystem::scanDirectory("Plugins", "dll", false);
for (auto& dll_name : dll_list)
{
// Let's check what the plugin is and load immediately
PluginLoader* plugin = new PluginLoader(dll_name);
if (plugin)
{
Log("Plugin loaded: %s", dll_name.c_str());
getPluginTypeFunc funptr = (getPluginTypeFunc)plugin->getFunctionAddress("getPluginType");
if (funptr)
{
PluginSDK::Types pluginType = funptr();
switch (pluginType)
{
case PluginSDK::Scripting:
{
Log("THIS IS A SCRIPTING PLUGIN");
createScriptEnvironmentFunc funptr = (createScriptEnvironmentFunc)plugin->getFunctionAddress("createScriptingEnvironment");
if (funptr)
{
ExtensionScripting* scriptingEnvironment = funptr(this);
if (scriptingEnvironment)
{
Log("Got the scripting environment, Registered.");
scriptingEnvironments.push_back(scriptingEnvironment);
}
}
}
break;
case PluginSDK::Audio:
{
Log("THIS IS A AUDIO PLUGIN");
createAudioEnvironmentFunc funptr = (createAudioEnvironmentFunc)plugin->getFunctionAddress("createAudioEnvironment");
if (funptr)
{
ExtensionAudio* audioEnvironment = funptr(this);
if (audioEnvironment)
{
Log("Got the audio environment, Registered.");
gameAudio.audioEnvironments.push_back(audioEnvironment);
}
}
}
break;
}
}
}
}
}