DLL working under mingw
This commit is contained in:
@@ -9,8 +9,9 @@ ifneq "" "$(findstring -linux-,$(MAKE_HOST))"
|
||||
OS=linux
|
||||
EXE=luprex
|
||||
DLL=luprex.so
|
||||
LIBS=-L./ext/openssl-mingw -lssl -lcrypto -ldl
|
||||
LIBS=-L./ext/openssl-linux -lssl -lcrypto -ldl
|
||||
LUAFLAGS=-DLUA_USE_APICHECK -DLUA_USE_POSIX
|
||||
LINKDLL=-export-dynamic -Wl,--no-allow-shlib-undefined -Wl,-z,defs -shared
|
||||
OPT=-g -O0
|
||||
|
||||
else ifneq "" "$(findstring cmd.exe,$(COMSPEC))"
|
||||
@@ -20,6 +21,7 @@ else ifneq "" "$(findstring cmd.exe,$(COMSPEC))"
|
||||
DLL=luprex.dll
|
||||
LIBS=-L./ext/openssl-mingw -lssl -lcrypto -lws2_32 -lcrypt32 -lcryptui
|
||||
LUAFLAGS=-DLUA_USE_APICHECK -DLUA_COMPAT_ALL
|
||||
LINKDLL=-Wl,--no-allow-shlib-undefined -shared
|
||||
OPT=-g -O0
|
||||
|
||||
else
|
||||
@@ -125,10 +127,10 @@ GPP=g++ -Wall -fvisibility=hidden $(OPT) -std=c++17 -MMD
|
||||
all: $(EXE) $(DLL)
|
||||
|
||||
$(EXE): $(OBJ_DRV)
|
||||
$(GPP) -o $@ $(OBJ_DRV) -L./ext/openssl-linux -lssl -lcrypto -ldl
|
||||
$(GPP) -o $@ $(OBJ_DRV) $(LIBS)
|
||||
|
||||
$(DLL): $(OBJ_ERIS) $(OBJ_CORE)
|
||||
$(GPP) -export-dynamic -Wl,--no-allow-shlib-undefined -Wl,-z,defs -shared -o $@ $^
|
||||
$(GPP) $(LINKDLL) -o $@ $^
|
||||
|
||||
obj/eris/%.o: ext/eris-master/src/%.c
|
||||
$(GPP) -fPIC $(LUAFLAGS) -o $@ -c $<
|
||||
|
||||
@@ -270,17 +270,11 @@ static void ssl_load_certificate_authorities(SSL_CTX *ctx) {
|
||||
CertCloseStore(hStore, 0);
|
||||
}
|
||||
|
||||
// Load the DLL if it's not already loaded. Stores
|
||||
// the handle in a global variable.
|
||||
static void load_engine_dll() {
|
||||
// Not actually implemented yet. Currently, the engine
|
||||
// is linked right into the executable.
|
||||
}
|
||||
|
||||
static void call_init_engine_wrapper(EngineWrapper *w) {
|
||||
load_engine_dll();
|
||||
HMODULE dll = LoadLibraryA(".\\luprex.dll");
|
||||
assert(dll != nullptr);
|
||||
using InitFn = void (*)(EngineWrapper *);
|
||||
InitFn initfn = (InitFn)GetProcAddress(GetModuleHandle(NULL), "init_engine_wrapper");
|
||||
InitFn initfn = (InitFn)GetProcAddress(dll, "init_engine_wrapper");
|
||||
assert(initfn != nullptr);
|
||||
initfn(w);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user