fix: Plugins not having a proper entry point on MSVC
This commit is contained in:
parent
e9bf1a9f7a
commit
327a02b87d
@ -13,6 +13,13 @@
|
|||||||
#include <wolv/utils/preproc.hpp>
|
#include <wolv/utils/preproc.hpp>
|
||||||
#include <wolv/utils/guards.hpp>
|
#include <wolv/utils/guards.hpp>
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#include <windows.h>
|
||||||
|
#define PLUGIN_ENTRY_POINT extern "C" BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD fwdReason, LPVOID lpReserved) { return TRUE; }
|
||||||
|
#else
|
||||||
|
#define PLUGIN_ENTRY_POINT
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
struct PluginFunctionHelperInstantiation {};
|
struct PluginFunctionHelperInstantiation {};
|
||||||
}
|
}
|
||||||
@ -44,9 +51,13 @@ void* PluginSubCommandsFunctionHelper<T>::getSubCommands() {
|
|||||||
|
|
||||||
#if defined (IMHEX_STATIC_LINK_PLUGINS)
|
#if defined (IMHEX_STATIC_LINK_PLUGINS)
|
||||||
#define IMHEX_PLUGIN_VISIBILITY_PREFIX static
|
#define IMHEX_PLUGIN_VISIBILITY_PREFIX static
|
||||||
|
#else
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#define IMHEX_PLUGIN_VISIBILITY_PREFIX extern "C" __declspec(dllexport)
|
||||||
#else
|
#else
|
||||||
#define IMHEX_PLUGIN_VISIBILITY_PREFIX extern "C" [[gnu::visibility("default")]]
|
#define IMHEX_PLUGIN_VISIBILITY_PREFIX extern "C" [[gnu::visibility("default")]]
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#define IMHEX_FEATURE_ENABLED(feature) WOLV_TOKEN_CONCAT(WOLV_TOKEN_CONCAT(WOLV_TOKEN_CONCAT(IMHEX_PLUGIN_, IMHEX_PLUGIN_NAME), _FEATURE_), feature)
|
#define IMHEX_FEATURE_ENABLED(feature) WOLV_TOKEN_CONCAT(WOLV_TOKEN_CONCAT(WOLV_TOKEN_CONCAT(IMHEX_PLUGIN_, IMHEX_PLUGIN_NAME), _FEATURE_), feature)
|
||||||
#define IMHEX_DEFINE_PLUGIN_FEATURES() IMHEX_DEFINE_PLUGIN_FEATURES_IMPL()
|
#define IMHEX_DEFINE_PLUGIN_FEATURES() IMHEX_DEFINE_PLUGIN_FEATURES_IMPL()
|
||||||
@ -77,7 +88,7 @@ void* PluginSubCommandsFunctionHelper<T>::getSubCommands() {
|
|||||||
ImGui::SetCurrentContext(ctx); \
|
ImGui::SetCurrentContext(ctx); \
|
||||||
GImGui = ctx; \
|
GImGui = ctx; \
|
||||||
} \
|
} \
|
||||||
extern "C" [[gnu::visibility("default")]] void WOLV_TOKEN_CONCAT(forceLinkPlugin_, IMHEX_PLUGIN_NAME)() { \
|
IMHEX_PLUGIN_VISIBILITY_PREFIX void WOLV_TOKEN_CONCAT(forceLinkPlugin_, IMHEX_PLUGIN_NAME)() { \
|
||||||
hex::PluginManager::addPlugin(name, hex::PluginFunctions { \
|
hex::PluginManager::addPlugin(name, hex::PluginFunctions { \
|
||||||
nullptr, \
|
nullptr, \
|
||||||
WOLV_TOKEN_CONCAT(initializeLibrary_, IMHEX_PLUGIN_NAME), \
|
WOLV_TOKEN_CONCAT(initializeLibrary_, IMHEX_PLUGIN_NAME), \
|
||||||
@ -92,6 +103,7 @@ void* PluginSubCommandsFunctionHelper<T>::getSubCommands() {
|
|||||||
nullptr \
|
nullptr \
|
||||||
}); \
|
}); \
|
||||||
} \
|
} \
|
||||||
|
PLUGIN_ENTRY_POINT \
|
||||||
IMHEX_PLUGIN_VISIBILITY_PREFIX void WOLV_TOKEN_CONCAT(initializeLibrary_, IMHEX_PLUGIN_NAME)()
|
IMHEX_PLUGIN_VISIBILITY_PREFIX void WOLV_TOKEN_CONCAT(initializeLibrary_, IMHEX_PLUGIN_NAME)()
|
||||||
|
|
||||||
#define IMHEX_PLUGIN_SETUP_IMPL(name, author, description) \
|
#define IMHEX_PLUGIN_SETUP_IMPL(name, author, description) \
|
||||||
@ -112,7 +124,7 @@ void* PluginSubCommandsFunctionHelper<T>::getSubCommands() {
|
|||||||
return PluginSubCommandsFunctionHelper<PluginFunctionHelperInstantiation>::getSubCommands(); \
|
return PluginSubCommandsFunctionHelper<PluginFunctionHelperInstantiation>::getSubCommands(); \
|
||||||
} \
|
} \
|
||||||
IMHEX_PLUGIN_VISIBILITY_PREFIX void initializePlugin(); \
|
IMHEX_PLUGIN_VISIBILITY_PREFIX void initializePlugin(); \
|
||||||
extern "C" [[gnu::visibility("default")]] void WOLV_TOKEN_CONCAT(forceLinkPlugin_, IMHEX_PLUGIN_NAME)() { \
|
IMHEX_PLUGIN_VISIBILITY_PREFIX void WOLV_TOKEN_CONCAT(forceLinkPlugin_, IMHEX_PLUGIN_NAME)() { \
|
||||||
hex::PluginManager::addPlugin(name, hex::PluginFunctions { \
|
hex::PluginManager::addPlugin(name, hex::PluginFunctions { \
|
||||||
initializePlugin, \
|
initializePlugin, \
|
||||||
nullptr, \
|
nullptr, \
|
||||||
@ -127,6 +139,7 @@ void* PluginSubCommandsFunctionHelper<T>::getSubCommands() {
|
|||||||
getFeatures \
|
getFeatures \
|
||||||
}); \
|
}); \
|
||||||
} \
|
} \
|
||||||
|
PLUGIN_ENTRY_POINT \
|
||||||
IMHEX_PLUGIN_VISIBILITY_PREFIX void initializePlugin()
|
IMHEX_PLUGIN_VISIBILITY_PREFIX void initializePlugin()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user