google / ion

Ion
Apache License 2.0
1.43k stars 92 forks source link

Does ionremote work on Windows x64? #29

Open MrMabulous opened 4 years ago

MrMabulous commented 4 years ago

I'm using ion (mainly ionmath) for a while in another project that I build with Bazel on windows. with a few small changes (https://github.com/google/ion/compare/master...MrMabulous:master) ion builds successfully using Visual Studio 2019's MSVC.

now I wanted to give ionremote a try but I'm getting linker errors when trying to create an ion::remote::RemoteServer

ionremote.lib(ionremote.remoteserver.obj) : error LNK2019: unresolved external symbol "bool __cdecl IonRemoteGetUri::RegisterAssets(void)" (?RegisterAssets@IonRemoteGetUri@@YA_NXZ) referenced in function "void __cdecl ion::remote::`anonymous namespace'::RegisterAssetsForRemoteServer(void)" (?RegisterAssetsForRemoteServer@?A0xe096928b@remote@ion@@YAXXZ)
ionremote.lib(ionremote.remoteserver.obj) : error LNK2019: unresolved external symbol "bool __cdecl IonRemoteRoot::RegisterAssets(void)" (?RegisterAssets@IonRemoteRoot@@YA_NXZ) referenced in function "void __cdecl ion::remote::`anonymous namespace'::RegisterAssetsForRemoteServer(void)" (?RegisterAssetsForRemoteServer@?A0xe096928b@remote@ion@@YAXXZ)
ionremote.lib(ionremote.nodegraphhandler.obj) : error LNK2019: unresolved external symbol "void __cdecl IonRemoteNodeGraphRoot::RegisterAssetsOnce(void)" (?RegisterAssetsOnce@IonRemoteNodeGraphRoot@@YAXXZ) referenced in function "public: __cdecl ion::remote::NodeGraphHandler::NodeGraphHandler(void)" (??0NodeGraphHandler@remote@ion@@QEAA@XZ)
ionremote.lib(ionremote.calltracehandler.obj) : error LNK2019: unresolved external symbol "void __cdecl IonRemoteCallTraceRoot::RegisterAssetsOnce(void)" (?RegisterAssetsOnce@IonRemoteCallTraceRoot@@YAXXZ) referenced in function "public: __cdecl ion::remote::CallTraceHandler::CallTraceHandler(void)" (??0CallTraceHandler@remote@ion@@QEAA@XZ)
ionremote.lib(ionremote.resourcehandler.obj) : error LNK2019: unresolved external symbol "void __cdecl IonRemoteResourcesRoot::RegisterAssetsOnce(void)" (?RegisterAssetsOnce@IonRemoteResourcesRoot@@YAXXZ) referenced in function "public: __cdecl ion::remote::ResourceHandler::ResourceHandler(class ion::base::SharedPtr<class ion::gfx::Renderer> const &)" (??0ResourceHandler@remote@ion@@QEAA@AEBV?$SharedPtr@VRenderer@gfx@ion@@@base@2@@Z)
ionremote.lib(ionremote.settinghandler.obj) : error LNK2019: unresolved external symbol "void __cdecl IonRemoteSettingsRoot::RegisterAssetsOnce(void)" (?RegisterAssetsOnce@IonRemoteSettingsRoot@@YAXXZ) referenced in function "public: __cdecl ion::remote::SettingHandler::SettingHandler(void)" (??0SettingHandler@remote@ion@@QEAA@XZ)
ionremote.lib(ionremote.shaderhandler.obj) : error LNK2019: unresolved external symbol "void __cdecl IonRemoteShadersRoot::RegisterAssetsOnce(void)" (?RegisterAssetsOnce@IonRemoteShadersRoot@@YAXXZ) referenced in function "public: __cdecl ion::remote::ShaderHandler::ShaderHandler(class ion::base::SharedPtr<class ion::gfxutils::ShaderManager> const &,class ion::base::SharedPtr<class ion::gfx::Renderer> const &)" (??0ShaderHandler@remote@ion@@QEAA@AEBV?$SharedPtr@VShaderManager@gfxutils@ion@@@base@2@AEBV?$SharedPtr@VRenderer@gfx@ion@@@42@@Z)
ionremote.lib(ionremote.tracinghandler.obj) : error LNK2019: unresolved external symbol "void __cdecl IonRemoteTracingRoot::RegisterAssetsOnce(void)" (?RegisterAssetsOnce@IonRemoteTracingRoot@@YAXXZ) referenced in function "public: __cdecl ion::remote::TracingHandler::TracingHandler(class ion::base::SharedPtr<class ion::gfxutils::Frame> const &,class ion::base::SharedPtr<class ion::gfx::Renderer> const &)" (??0TracingHandler@remote@ion@@QEAA@AEBV?$SharedPtr@VFrame@gfxutils@ion@@@base@2@AEBV?$SharedPtr@VRenderer@gfx@ion@@@42@@Z)
ionportgfx.lib(ionportgfx.wglcontext.obj) : error LNK2019: unresolved external symbol __imp_wglCreateContext referenced in function "public: bool __cdecl ion::portgfx::`anonymous namespace'::WglContext::InitOwned(class ion::portgfx::A0xe74b9e20::WglContext const *)" (?InitOwned@WglContext@?A0xe74b9e20@portgfx@ion@@QEAA_NPEBV1234@@Z)
ionportgfx.lib(ionportgfx.wglcontext.obj) : error LNK2019: unresolved external symbol __imp_wglDeleteContext referenced in function "public: virtual __cdecl ion::portgfx::`anonymous namespace'::WglContext::~WglContext(void)" (??1WglContext@?A0xe74b9e20@portgfx@ion@@UEAA@XZ)
ionportgfx.lib(ionportgfx.wglcontext.obj) : error LNK2019: unresolved external symbol __imp_wglGetCurrentContext referenced in function "public: static unsigned __int64 __cdecl ion::portgfx::GlContext::GetCurrentGlContextId(void)" (?GetCurrentGlContextId@GlContext@portgfx@ion@@SA_KXZ)
ionportgfx.lib(ionportgfx.wglcontext.obj) : error LNK2019: unresolved external symbol __imp_wglGetCurrentDC referenced in function "public: bool __cdecl ion::portgfx::`anonymous namespace'::WglContext::InitWrapped(void)" (?InitWrapped@WglContext@?A0xe74b9e20@portgfx@ion@@QEAA_NXZ)
ionportgfx.lib(ionportgfx.wglcontext.obj) : error LNK2019: unresolved external symbol __imp_wglGetProcAddress referenced in function "private: void * __cdecl ion::portgfx::`anonymous namespace'::WglContext::GetProcAddressImpl(char const *,bool)const " (?GetProcAddressImpl@WglContext@?A0xe74b9e20@portgfx@ion@@AEBAPEAXPEBD_N@Z)
ionportgfx.lib(ionportgfx.wglcontext.obj) : error LNK2019: unresolved external symbol __imp_wglMakeCurrent referenced in function "public: virtual void __cdecl ion::portgfx::`anonymous namespace'::WglContext::ClearCurrentContextImpl(void)" (?ClearCurrentContextImpl@WglContext@?A0xe74b9e20@portgfx@ion@@UEAAXXZ)
ionportgfx.lib(ionportgfx.wglcontext.obj) : error LNK2019: unresolved external symbol __imp_wglShareLists referenced in function "public: bool __cdecl ion::portgfx::`anonymous namespace'::WglContext::InitOwned(class ion::portgfx::A0xe74b9e20::WglContext const *)" (?InitOwned@WglContext@?A0xe74b9e20@portgfx@ion@@QEAA_NPEBV1234@@Z)
ionportgfx.lib(ionportgfx.wglcontext.obj) : error LNK2019: unresolved external symbol __imp_SwapBuffers referenced in function "public: virtual void __cdecl ion::portgfx::`anonymous namespace'::WglContext::SwapBuffers(void)" (?SwapBuffers@WglContext@?A0xe74b9e20@portgfx@ion@@UEAAXXZ)
ionportgfx.lib(ionportgfx.window_win32.obj) : error LNK2019: unresolved external symbol __imp_ChoosePixelFormat referenced in function "public: static class std::unique_ptr<class ion::portgfx::WindowWin32,struct std::default_delete<class ion::portgfx::WindowWin32> > __cdecl ion::portgfx::WindowWin32::Create(int,int,int,int)" (?Create@WindowWin32@portgfx@ion@@SA?AV?$unique_ptr@VWindowWin32@portgfx@ion@@U?$default_delete@VWindowWin32@portgfx@ion@@@std@@@std@@HHHH@Z)
ionportgfx.lib(ionportgfx.window_win32.obj) : error LNK2019: unresolved external symbol __imp_SetPixelFormat referenced in function "public: static class std::unique_ptr<class ion::portgfx::WindowWin32,struct std::default_delete<class ion::portgfx::WindowWin32> > __cdecl ion::portgfx::WindowWin32::Create(int,int,int,int)" (?Create@WindowWin32@portgfx@ion@@SA?AV?$unique_ptr@VWindowWin32@portgfx@ion@@U?$default_delete@VWindowWin32@portgfx@ion@@@std@@@std@@HHHH@Z)
ionportgfx.lib(ionportgfx.window_win32.obj) : error LNK2019: unresolved external symbol __imp_DefWindowProcW referenced in function "public: __cdecl ion::portgfx::`anonymous namespace'::IonWindowClass::IonWindowClass(void)" (??0IonWindowClass@?A0xb7d60742@portgfx@ion@@QEAA@XZ)
ionportgfx.lib(ionportgfx.window_win32.obj) : error LNK2019: unresolved external symbol __imp_UnregisterClassA referenced in function "private: virtual __cdecl ion::base::StaticDeleter<class ion::portgfx::`anonymous namespace'::IonWindowClass>::~StaticDeleter<class ion::portgfx::`anonymous namespace'::IonWindowClass>(void)" (??1?$StaticDeleter@VIonWindowClass@?A0xb7d60742@portgfx@ion@@@base@ion@@EEAA@XZ)
ionportgfx.lib(ionportgfx.window_win32.obj) : error LNK2019: unresolved external symbol __imp_RegisterClassExA referenced in function "public: __cdecl ion::portgfx::`anonymous namespace'::IonWindowClass::IonWindowClass(void)" (??0IonWindowClass@?A0xb7d60742@portgfx@ion@@QEAA@XZ)
ionportgfx.lib(ionportgfx.window_win32.obj) : error LNK2019: unresolved external symbol __imp_CreateWindowExA referenced in function "public: static class std::unique_ptr<class ion::portgfx::WindowWin32,struct std::default_delete<class ion::portgfx::WindowWin32> > __cdecl ion::portgfx::WindowWin32::Create(int,int,int,int)" (?Create@WindowWin32@portgfx@ion@@SA?AV?$unique_ptr@VWindowWin32@portgfx@ion@@U?$default_delete@VWindowWin32@portgfx@ion@@@std@@@std@@HHHH@Z)
ionportgfx.lib(ionportgfx.window_win32.obj) : error LNK2019: unresolved external symbol __imp_DestroyWindow referenced in function "public: __cdecl std::unique_ptr<class ion::portgfx::WindowWin32,struct std::default_delete<class ion::portgfx::WindowWin32> >::~unique_ptr<class ion::portgfx::WindowWin32,struct std::default_delete<class ion::portgfx::WindowWin32> >(void)" (??1?$unique_ptr@VWindowWin32@portgfx@ion@@U?$default_delete@VWindowWin32@portgfx@ion@@@std@@@std@@QEAA@XZ)
ionportgfx.lib(ionportgfx.window_win32.obj) : error LNK2019: unresolved external symbol __imp_GetDC referenced in function "public: static class std::unique_ptr<class ion::portgfx::WindowWin32,struct std::default_delete<class ion::portgfx::WindowWin32> > __cdecl ion::portgfx::WindowWin32::Create(int,int,int,int)" (?Create@WindowWin32@portgfx@ion@@SA?AV?$unique_ptr@VWindowWin32@portgfx@ion@@U?$default_delete@VWindowWin32@portgfx@ion@@@std@@@std@@HHHH@Z)
ionprofile.lib(ionprofile.calltracemanager.obj) : error LNK2019: unresolved external symbol "void __cdecl ion::analytics::OutputBenchmarkPretty(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool,class ion::analytics::Benchmark const &,class std::basic_ostream<char,struct std::char_traits<char> > &)" (?OutputBenchmarkPretty@analytics@ion@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_NAEBVBenchmark@12@AEAV?$basic_ostream@DU?$char_traits@D@std@@@4@@Z) referenced in function "public: virtual __cdecl ion::profile::CallTraceManager::~CallTraceManager(void)" (??1CallTraceManager@profile@ion@@UEAA@XZ)

I suspect this has something to do with zipasset_generator.gypi and the iad files in remote/res not working correctly? (though I'm not getting any errors when compiling ion).

Is ionremote supposed to work on Windows at all?