schellingb / PseudoVive

Simulate device names for any SteamVR driver to increase compatiblity
Other
62 stars 7 forks source link

prepare for VS2019 and move binaries to releases #12

Open Bluscream opened 4 years ago

schellingb commented 4 years ago

With these changes, does it build successfully for you in VS2019 in release mode?

Bluscream commented 4 years ago

Nope, it still the throws the same compiler errors that https://github.com/schellingb/PseudoVive/issues/4#issue-331807786 already describes. Some stackoverflow post suggested to set the linker "Ignore All Default Libraries" option to "No" but that only resulted in a bunch of other errors. In case you were wondering what those were:

1>------ Build started: Project: driver_2vive, Configuration: Debug Win32 ------
1>driver_2vive.cpp
1>   Creating library C:\Program Files (x86)\Steam\SteamApps\common\SteamVR\drivers\2vive\bin\win32\driver_2vive.lib and object C:\Program Files (x86)\Steam\SteamApps\common\SteamVR\drivers\2vive\bin\win32\driver_2vive.exp
1>LIBCMTD.lib(thread_safe_statics.obj) : error LNK2019: unresolved external symbol __CrtDbgReportW referenced in function __Init_thread_wait
1>LIBCMTD.lib(init.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW
1>LIBCMTD.lib(init.obj) : error LNK2019: unresolved external symbol __CrtDbgReport referenced in function __CRT_RTC_INIT
1>LIBCMTD.lib(error.obj) : error LNK2019: unresolved external symbol _strcpy_s referenced in function "void __cdecl _RTC_StackFailure(void *,char const *)" (?_RTC_StackFailure@@YAXPAXPBD@Z)
1>LIBCMTD.lib(error.obj) : error LNK2019: unresolved external symbol _strcat_s referenced in function "void __cdecl _RTC_StackFailure(void *,char const *)" (?_RTC_StackFailure@@YAXPAXPBD@Z)
1>LIBCMTD.lib(error.obj) : error LNK2019: unresolved external symbol ___stdio_common_vsprintf_s referenced in function __vsprintf_s_l
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol ___vcrt_initialize referenced in function ___scrt_initialize_crt
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol ___vcrt_uninitialize referenced in function ___scrt_initialize_crt
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol ___vcrt_uninitialize_critical referenced in function ___scrt_dllmain_uninitialize_critical
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol ___vcrt_thread_attach referenced in function ___scrt_dllmain_crt_thread_attach
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol ___vcrt_thread_detach referenced in function ___scrt_dllmain_crt_thread_attach
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol __seh_filter_dll referenced in function ___scrt_dllmain_exception_filter
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol __is_c_termination_complete referenced in function ___scrt_dllmain_uninitialize_c
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol __configure_narrow_argv referenced in function "public: static int __cdecl __scrt_narrow_argv_policy::configure_argv(void)" (?configure_argv@__scrt_narrow_argv_policy@@SAHXZ)
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol __initialize_narrow_environment referenced in function "public: static int __cdecl __scrt_narrow_environment_policy::initialize_environment(void)" (?initialize_environment@__scrt_narrow_environment_policy@@SAHXZ)
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol __initialize_onexit_table referenced in function ___scrt_initialize_onexit_tables
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol __register_onexit_function referenced in function __onexit
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol __execute_onexit_table referenced in function ___scrt_dllmain_uninitialize_c
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol __crt_atexit referenced in function __onexit
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol __crt_at_quick_exit referenced in function _at_quick_exit
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol ___acrt_initialize referenced in function ___scrt_initialize_crt
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol ___acrt_uninitialize referenced in function ___scrt_uninitialize_crt
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol ___acrt_uninitialize_critical referenced in function ___scrt_dllmain_uninitialize_critical
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol ___acrt_thread_attach referenced in function ___scrt_dllmain_crt_thread_attach
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol ___acrt_thread_detach referenced in function ___scrt_dllmain_crt_thread_detach
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol __cexit referenced in function ___scrt_dllmain_uninitialize_c
1>LIBCMTD.lib(utility.obj) : error LNK2019: unresolved external symbol __except_handler4 referenced in function ___scrt_is_nonwritable_in_current_image
1>LIBCMTD.lib(chandler4_noexcept.obj) : error LNK2001: unresolved external symbol __except_handler4
1>LIBCMTD.lib(utility_desktop.obj) : error LNK2019: unresolved external symbol _terminate referenced in function ___scrt_unhandled_exception_filter@4
1>LIBCMTD.lib(chandler4_noexcept.obj) : error LNK2001: unresolved external symbol _terminate
1>LIBCMTD.lib(utility_desktop.obj) : error LNK2019: unresolved external symbol ___current_exception referenced in function ___scrt_unhandled_exception_filter@4
1>LIBCMTD.lib(chandler4_noexcept.obj) : error LNK2001: unresolved external symbol ___current_exception
1>LIBCMTD.lib(utility_desktop.obj) : error LNK2019: unresolved external symbol ___current_exception_context referenced in function ___scrt_unhandled_exception_filter@4
1>LIBCMTD.lib(chandler4_noexcept.obj) : error LNK2001: unresolved external symbol ___current_exception_context
1>LIBCMTD.lib(utility_desktop.obj) : error LNK2019: unresolved external symbol _memset referenced in function ___scrt_fastfail
1>LIBCMTD.lib(pdblkup.obj) : error LNK2019: unresolved external symbol __wmakepath_s referenced in function "int __cdecl GetPdbDllPathFromFilePath(wchar_t const *,wchar_t *,unsigned int)" (?GetPdbDllPathFromFilePath@@YAHPB_WPA_WI@Z)
1>LIBCMTD.lib(pdblkup.obj) : error LNK2019: unresolved external symbol __wsplitpath_s referenced in function "int __cdecl GetPdbDllPathFromFilePath(wchar_t const *,wchar_t *,unsigned int)" (?GetPdbDllPathFromFilePath@@YAHPB_WPA_WI@Z)
1>LIBCMTD.lib(pdblkup.obj) : error LNK2019: unresolved external symbol _wcscpy_s referenced in function "int __cdecl GetPdbDllPathFromFilePath(wchar_t const *,wchar_t *,unsigned int)" (?GetPdbDllPathFromFilePath@@YAHPB_WPA_WI@Z)
1>LIBCMTD.lib(pdblkup.obj) : error LNK2019: unresolved external symbol ___vcrt_GetModuleFileNameW referenced in function "struct HINSTANCE__ * __cdecl GetPdbDll(void)" (?GetPdbDll@@YAPAUHINSTANCE__@@XZ)
1>LIBCMTD.lib(pdblkup.obj) : error LNK2019: unresolved external symbol ___vcrt_GetModuleHandleW referenced in function "struct HINSTANCE__ * __cdecl GetPdbDll(void)" (?GetPdbDll@@YAPAUHINSTANCE__@@XZ)
1>LIBCMTD.lib(pdblkup.obj) : error LNK2019: unresolved external symbol ___vcrt_LoadLibraryExW referenced in function "struct HINSTANCE__ * __cdecl GetPdbDll(void)" (?GetPdbDll@@YAPAUHINSTANCE__@@XZ)
1>C:\Program Files (x86)\Steam\SteamApps\common\SteamVR\drivers\2vive\bin\win32\driver_2vive.dll : fatal error LNK1120: 36 unresolved externals
1>Done building project "driver_2vive.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
schellingb commented 4 years ago

I just committed 7958135 can you try with this?

Basically newer Visual Studio versions do not like building this DLL project without the C runtime library. So the update enables the default libraries (only for Visual Studio versions 2015 and newer) to make it build there. Using the CRT bloats the output file size by 500% so it's less than ideal but I don't see an easy way around it.

Bluscream commented 4 years ago

Well, for such a small file even 500% size doesn't really make much of a difference since we're talking VR ready gaming machines here ^^

Bluscream commented 4 years ago
1>------ Build started: Project: driver_2vive, Configuration: Debug Win32 ------
1>driver_2vive.cpp
1>   Creating library C:\Program Files (x86)\Steam\SteamApps\common\SteamVR\drivers\2vive\bin\win32\driver_2vive.lib and object C:\Program Files (x86)\Steam\SteamApps\common\SteamVR\drivers\2vive\bin\win32\driver_2vive.exp
1>driver_2vive.vcxproj -> C:\Program Files (x86)\Steam\SteamApps\common\SteamVR\drivers\2vive\bin\win32\driver_2vive.dll
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Bluscream commented 4 years ago

btw have you heard of https://github.com/Shaddoll/FakeVive yet?