enigma don't compile
Reporter: TheLastGuard | Status: open | Last Modified: March 21, 2023, 09:44:01 amg++ -std=c++17 -Wall -Wextra -Wpedantic -g -I. -D_WIN32_WINNT=0x0600 -I.eobjs -fPIC -o ../../libProtocols.dll .eobjs/Action.pb.o .eobjs/Background.pb.o .eobjs/EventDescriptor.pb.o .eobjs/Font.pb.o .eobjs/GameInformation.pb.o .eobjs/Include.pb.o .eobjs/Object.pb.o .eobjs/Path.pb.o .eobjs/Room.pb.o .eobjs/Script.pb.o .eobjs/Settings.pb.o .eobjs/Shader.pb.o .eobjs/Sound.pb.o .eobjs/Sprite.pb.o .eobjs/Timeline.pb.o .eobjs/compiler.pb.o .eobjs/game.pb.o .eobjs/options.pb.o .eobjs/project.pb.o .eobjs/server.pb.o .eobjs/treenode.pb.o .eobjs/server.grpc.pb.o -g -lgrpc++ -shared -lprotobuf
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: .eobjs/server.grpc.pb.o: in function absl::lts_20211102::MutexLock::MutexLock(absl::lts_20211102::Mutex*)': C:/msys64/mingw64/include/absl/synchronization/mutex.h:526: undefined reference to
absl::lts_20211102::Mutex::Lock()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: .eobjs/server.grpc.pb.o: in function absl::lts_20211102::MutexLock::~MutexLock()': C:/msys64/mingw64/include/absl/synchronization/mutex.h:543: undefined reference to
absl::lts_20211102::Mutex::Unlock()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: .eobjs/server.grpc.pb.o: in function grpc::CompletionQueue::~CompletionQueue()': C:/msys64/mingw64/include/grpcpp/impl/codegen/completion_queue.h:121: undefined reference to
absl::lts_20211102::Mutex::~Mutex()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: .eobjs/server.grpc.pb.o: in function grpc::CompletionQueue::CompletionQueue(grpc_completion_queue_attributes const&)': C:/msys64/mingw64/include/grpcpp/impl/codegen/completion_queue.h:259: undefined reference to
absl::lts_20211102::Mutex::~Mutex()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: .eobjs/server.grpc.pb.o: in function grpc::internal::ClientCallbackReaderImpl<buffers::CompileReply>::ClientCallbackReaderImpl<buffers::CompileRequest const>(grpc::internal::Call, grpc::ClientContext*, buffers::CompileRequest const*, grpc::ClientReadReactor<buffers::CompileReply>*)': C:/msys64/mingw64/include/grpcpp/impl/codegen/client_callback.h:821: undefined reference to
absl::lts_20211102::Mutex::~Mutex()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: .eobjs/server.grpc.pb.o: in function grpc::internal::ClientCallbackReaderImpl<buffers::Resource>::ClientCallbackReaderImpl<buffers::Empty const>(grpc::internal::Call, grpc::ClientContext*, buffers::Empty const*, grpc::ClientReadReactor<buffers::Resource>*)': C:/msys64/mingw64/include/grpcpp/impl/codegen/client_callback.h:821: undefined reference to
absl::lts_20211102::Mutex::~Mutex()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: .eobjs/server.grpc.pb.o: in function grpc::internal::ClientCallbackReaderImpl<buffers::SystemType>::ClientCallbackReaderImpl<buffers::Empty const>(grpc::internal::Call, grpc::ClientContext*, buffers::Empty const*, grpc::ClientReadReactor<buffers::SystemType>*)': C:/msys64/mingw64/include/grpcpp/impl/codegen/client_callback.h:821: undefined reference to
absl::lts_20211102::Mutex::~Mutex()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: .eobjs/server.grpc.pb.o:C:/msys64/mingw64/include/grpcpp/impl/codegen/client_callback.h:730: more undefined references to `absl::lts_20211102::Mutex::~Mutex()' follow
collect2.exe: error: ld returned 1 exit status
make[1]: *** [../../Default.mk:23: ../../libProtocols.dll] Error 1
make[1]: Leaving directory '/c/Users/chuya/Downloads/enigma-dev/shared/protos'
make: *** [Makefile:42: libProtocols] Error 2
ENIGMA Configuration:
- Windows and msys2
Thanks for reporting. We've been looking into this, but we only have one developer on Windows.
this problem on windows because of grpc package so by following those steps i think it will be resolved
- open MSYSx64 or whatever you use and type
pkg-config --cflags --libs grpc++
and hit enter - copy its output to an editor like visual studio code and search for a missing separator, a missing separator is
-l
before every dependency so for example-labsl_strings_internal advapi32 -labsl_base
theadvapi32
must be-ladvapi32
. Do that for all the text, search for something like this - after you fix all the text, open these two files
/enigma-dev/CommandLine/emake/Makefile
and/enigma-dev/shared/protos/Makefile
in your visual studio code - search in these two makefiles for
-lgrpc++
and replace it with your fixed text - make sure that there's no new lines in the fixed text and also every two dependencies must be separated by space for example this is correct
-labsl_strings_internal -ladvapi32
, this is incorrect-labsl_strings_internal-ladvapi32
if you encountered any issue with those steps just ping me here
EDIT: the wiki has provided officially the fix for LGM https://enigma-dev.org/docs/Wiki/Install:Windows#:~:text=%2D-,Libprotocols.dll%20Errors,-This%20is%20due