USB: fix more linker issues on windows

This commit is contained in:
GovanifY 2020-11-04 13:30:15 +01:00 committed by refractionpcsx2
parent 395b372ef7
commit 30235f49db
14 changed files with 73 additions and 60 deletions

View File

@ -136,15 +136,15 @@ void SaveConfig()
SaveSetting("MAIN", "log", conf.Log);
#endif
SaveSetting(nullptr, 0, N_DEVICE_PORT, N_DEVICE, conf.Port[0]);
SaveSetting(nullptr, 1, N_DEVICE_PORT, N_DEVICE, conf.Port[1]);
SaveSetting(nullptr, 0, N_DEVICE_PORT, N_DEVICE, str_to_wstr(conf.Port[0]));
SaveSetting(nullptr, 1, N_DEVICE_PORT, N_DEVICE, str_to_wstr(conf.Port[1]));
SaveSetting(nullptr, 0, N_DEVICE_PORT, N_WHEEL_TYPE, conf.WheelType[0]);
SaveSetting(nullptr, 1, N_DEVICE_PORT, N_WHEEL_TYPE, conf.WheelType[1]);
for (auto& k : changedAPIs)
{
SaveSetting(nullptr, k.first.first, k.first.second, N_DEVICE_API, k.second);
SaveSetting(nullptr, k.first.first, k.first.second, N_DEVICE_API, str_to_wstr(k.second));
}
#ifdef _WIN32
@ -169,8 +169,8 @@ void LoadConfig()
LoadSetting("MAIN", "log", conf.Log);
#endif
LoadSetting(nullptr, 0, N_DEVICE_PORT, N_DEVICE, conf.Port[0]);
LoadSetting(nullptr, 1, N_DEVICE_PORT, N_DEVICE, conf.Port[1]);
LoadSetting(nullptr, 0, N_DEVICE_PORT, N_DEVICE, str_to_wstr(conf.Port[0]));
LoadSetting(nullptr, 1, N_DEVICE_PORT, N_DEVICE, str_to_wstr(conf.Port[1]));
LoadSetting(nullptr, 0, N_DEVICE_PORT, N_WHEEL_TYPE, conf.WheelType[0]);
LoadSetting(nullptr, 1, N_DEVICE_PORT, N_WHEEL_TYPE, conf.WheelType[1]);
@ -180,7 +180,7 @@ void LoadConfig()
for (int i = 0; i < 2; i++)
{
std::string api;
LoadSetting(nullptr, i, conf.Port[i], N_DEVICE_API, api);
LoadSetting(nullptr, i, conf.Port[i], N_DEVICE_API, str_to_wstr(api));
auto dev = instance.Device(conf.Port[i]);
if (dev)

View File

@ -18,7 +18,8 @@
#include <cstdio>
#include <vector>
#include <algorithm>
#include "osdebugout.h"
#include "../osdebugout.h"
#include "../platcompat.h"
extern HINSTANCE hInst;
@ -64,7 +65,7 @@ namespace shared
static void CursorCapture(HWND hWnd)
{
OSDebugOut(TEXT("Capture cursor\n"));
Console.WriteLn("Capture cursor\n");
SetCapture(hWnd);
ShowCursor(0);
@ -81,7 +82,7 @@ namespace shared
static void CursorRelease()
{
OSDebugOut(TEXT("Release cursor\n"));
Console.WriteLn("Release cursor\n");
if (cursorCaptured)
{
ClipCursor(0);
@ -146,15 +147,15 @@ namespace shared
switch (uMsg)
{
case WM_ACTIVATE:
OSDebugOut(TEXT("****** WM_ACTIVATE ****** %p %d\n"), hWnd, LOWORD(wParam) != WA_INACTIVE);
Console.WriteLn("****** WM_ACTIVATE ****** %p %d\n", hWnd, LOWORD(wParam) != WA_INACTIVE);
skipInput = LOWORD(wParam) == WA_INACTIVE;
break;
case WM_SETFOCUS:
OSDebugOut(TEXT("****** WM_SETFOCUS ****** %p\n"), hWnd);
Console.WriteLn("****** WM_SETFOCUS ****** %p\n", hWnd);
skipInput = false;
break;
case WM_KILLFOCUS:
OSDebugOut(TEXT("****** WM_KILLFOCUS ****** %p\n"), hWnd);
Console.WriteLn("****** WM_KILLFOCUS ****** %p\n", hWnd);
skipInput = true;
break;
}
@ -197,17 +198,17 @@ namespace shared
break;
}
case WM_ACTIVATE:
OSDebugOut(TEXT("****** WM_ACTIVATE ****** %p %d\n"), hWnd, LOWORD(wParam) != WA_INACTIVE);
Console.WriteLn("****** WM_ACTIVATE ****** %p %d\n", hWnd, LOWORD(wParam) != WA_INACTIVE);
skipInput = LOWORD(wParam) == WA_INACTIVE;
if (LOWORD(wParam) == WA_INACTIVE)
CursorRelease();
break;
case WM_SETFOCUS:
OSDebugOut(TEXT("****** WM_SETFOCUS ****** %p\n"), hWnd);
Console.WriteLn("****** WM_SETFOCUS ****** %p\n", hWnd);
//skipInput = false; //TODO when the hell is WM_SETFOCUS sent? seems like only when mouse is capped
break;
case WM_KILLFOCUS:
OSDebugOut(TEXT("****** WM_KILLFOCUS ****** %p\n"), hWnd);
Console.WriteLn("****** WM_KILLFOCUS ****** %p\n", hWnd);
//skipInput = true;
break;
case WM_SIZE:

View File

@ -19,6 +19,7 @@
#include "usb-eyetoy-webcam.h"
#include "ov519.h"
#include "../qemu-usb/desc.h"
#include "../shared/inifile.h"
namespace usb_eyetoy
{
@ -515,11 +516,11 @@ namespace usb_eyetoy
{
VideoDevice* videodev = nullptr;
std::string varApi;
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, varApi);
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, str_to_wstr(varApi));
VideoDeviceProxyBase* proxy = RegisterVideoDevice::instance().Proxy(varApi);
if (!proxy)
{
SysMessage(TEXT("Invalid video device API: %" SFMTs "\n"), varApi.c_str());
Console.WriteLn("Invalid video device API: %" SFMTs "\n", varApi.c_str());
return NULL;
}

View File

@ -29,6 +29,7 @@
#include "../qemu-usb/desc.h"
#include "usb-hid.h"
#include "../osdebugout.h"
#include "../shared/inifile.h"
#define CONTAINER_OF(p, type, field) ((type*)((char*)p - ((ptrdiff_t) & ((type*)0)->field)))
@ -729,11 +730,11 @@ namespace usb_hid
UsbHIDState* s;
std::string varApi;
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, varApi);
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, str_to_wstr(varApi));
UsbHIDProxyBase* proxy = RegisterUsbHID::instance().Proxy(varApi);
if (!proxy)
{
SysMessage(TEXT("Invalid HID API: %" SFMTs "\n"), varApi.c_str());
Console.WriteLn("Invalid HID API: %s \n", varApi.c_str());
return nullptr;
}
@ -820,11 +821,11 @@ namespace usb_hid
UsbHIDState* s;
std::string varApi;
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, varApi);
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, str_to_wstr(varApi));
UsbHIDProxyBase* proxy = RegisterUsbHID::instance().Proxy(varApi);
if (!proxy)
{
SysMessage(TEXT("Invalid HID API: %" SFMTs "\n"), varApi.c_str());
Console.WriteLn("Invalid HID API: %s\n", varApi.c_str());
return nullptr;
}
@ -892,11 +893,11 @@ namespace usb_hid
UsbHIDState* s;
std::string varApi;
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, varApi);
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, str_to_wstr(varApi));
UsbHIDProxyBase* proxy = RegisterUsbHID::instance().Proxy(varApi);
if (!proxy)
{
SysMessage(TEXT("Invalid HID API: %" SFMTs "\n"), varApi.c_str());
Console.WriteLn("Invalid HID API: %s\n", varApi.c_str());
return nullptr;
}

View File

@ -154,7 +154,7 @@ namespace usb_mic
HRESULT err = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void**)&mmEnumerator);
if (FAILED(err))
{
SysMessage(TEXT("MMAudioDevice::Init(): Could not create IMMDeviceEnumerator = %08lX\n"), err);
Console.WriteLn("MMAudioDevice::Init(): Could not create IMMDeviceEnumerator = %08lX\n", err);
return false;
}
//TODO Not starting thread here unnecesserily
@ -183,7 +183,7 @@ namespace usb_mic
if (FAILED(err))
{
if (!mDeviceLost)
SysMessage(TEXT("MMAudioDevice::Reinitialize(): Could not create IMMDevice = %08lX\n"), err);
Console.WriteLn("MMAudioDevice::Reinitialize(): Could not create IMMDevice = %08lX\n", err);
return false;
}
@ -191,7 +191,7 @@ namespace usb_mic
if (FAILED(err))
{
if (!mDeviceLost)
SysMessage(TEXT("MMAudioDevice::Reinitialize(): Could not create IAudioClient = %08lX\n"), err);
Console.WriteLn("MMAudioDevice::Reinitialize(): Could not create IAudioClient = %08lX\n", err);
return false;
}
@ -219,7 +219,7 @@ namespace usb_mic
if (FAILED(err))
{
if (!mDeviceLost)
SysMessage(TEXT("MMAudioDevice::Reinitialize(): Could not get mix format from audio client = %08lX\n"), err);
Console.WriteLn("MMAudioDevice::Reinitialize(): Could not get mix format from audio client = %08lX\n", err);
return false;
}
@ -233,7 +233,7 @@ namespace usb_mic
if (wfext->SubFormat != KSDATAFORMAT_SUBTYPE_IEEE_FLOAT)
{
if (!mDeviceLost)
SysMessage(TEXT("MMAudioDevice::Reinitialize(): Unsupported wave format\n"));
Console.WriteLn("MMAudioDevice::Reinitialize(): Unsupported wave format\n");
CoTaskMemFree(pwfx);
return false;
}
@ -241,7 +241,7 @@ namespace usb_mic
else if (pwfx->wFormatTag != WAVE_FORMAT_IEEE_FLOAT)
{
if (!mDeviceLost)
SysMessage(TEXT("MMAudioDevice::Reinitialize(): Unsupported wave format\n"));
Console.WriteLn("MMAudioDevice::Reinitialize(): Unsupported wave format\n");
CoTaskMemFree(pwfx);
return false;
}
@ -267,7 +267,7 @@ namespace usb_mic
if (FAILED(err))
{
if (!mDeviceLost)
SysMessage(TEXT("MMAudioDevice::Reinitialize(): Could not initialize audio client, result = %08lX\n"), err);
Console.WriteLn("MMAudioDevice::Reinitialize(): Could not initialize audio client, result = %08lX\n", err);
CoTaskMemFree(pwfx);
return false;
}
@ -281,7 +281,7 @@ namespace usb_mic
if (FAILED(err))
{
if (!mDeviceLost)
SysMessage(TEXT("MMAudioDevice::Reinitialize(): Could not get audio %s client, result = %08lX\n"),
Console.WriteLn("MMAudioDevice::Reinitialize(): Could not get audio %s client, result = %08lX\n",
(mAudioDir == AUDIODIR_SOURCE ? TEXT("capture") : TEXT("render")), err);
CoTaskMemFree(pwfx);
return false;
@ -292,7 +292,7 @@ namespace usb_mic
if (FAILED(err))
{
if (!mDeviceLost)
SysMessage(TEXT("MMAudioDevice::Reinitialize(): Could not get audio capture clock, result = %08lX\n"), err);
Console.WriteLn("MMAudioDevice::Reinitialize(): Could not get audio capture clock, result = %08lX\n", err);
CoTaskMemFree(pwfx);
return false;
}
@ -310,7 +310,7 @@ namespace usb_mic
{
OSDebugOut(TEXT("Failed to create resampler: error %08lX\n"), errVal);
#ifndef _DEBUG
SysMessage(TEXT("USBqemu: Failed to create resampler: error %08lX"), errVal);
Console.WriteLn("USBqemu: Failed to create resampler: error %08lX", errVal);
#endif
return false;
}
@ -798,7 +798,7 @@ namespace usb_mic
err = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void**)&mmEnumerator);
if (FAILED(err))
{
SysMessage(TEXT("AudioDevices: Could not create IMMDeviceEnumerator\n"));
Console.WriteLn("AudioDevices: Could not create IMMDeviceEnumerator\n");
return;
}
@ -811,7 +811,7 @@ namespace usb_mic
err = mmEnumerator->EnumAudioEndpoints(audioDeviceType, flags, &collection);
if (FAILED(err))
{
SysMessage(TEXT("AudioDevices: Could not enumerate audio endpoints\n"));
Console.WriteLn("AudioDevices: Could not enumerate audio endpoints\n");
SafeRelease(mmEnumerator);
return;
}

View File

@ -27,6 +27,7 @@
#include "PrecompiledHeader.h"
#include "../qemu-usb/vl.h"
#include "../qemu-usb/desc.h"
#include "../shared/inifile.h"
#include <assert.h>
#include "audio.h"
@ -985,7 +986,7 @@ namespace usb_mic
USBDevice* HeadsetDevice::CreateDevice(int port)
{
std::string api;
if (!LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, api))
if (!LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, str_to_wstr(api)))
return nullptr;
return HeadsetDevice::CreateDevice(port, api);
}
@ -1000,7 +1001,7 @@ namespace usb_mic
s->audsrcproxy = RegisterAudioDevice::instance().Proxy(api);
if (!s->audsrcproxy)
{
SysMessage(TEXT("headset: Invalid audio API: '%") TEXT(SFMTs) TEXT("'\n"), api.c_str());
Console.WriteLn("headset: Invalid audio API: '%s'\n", api.c_str());
delete s;
return NULL;
}

View File

@ -17,6 +17,7 @@
#include "usb-mic-singstar.h"
#include "audio.h"
#include "../qemu-usb/desc.h"
#include "../shared/inifile.h"
namespace usb_mic
{
@ -242,7 +243,7 @@ namespace usb_mic
USBDevice* LogitechMicDevice::CreateDevice(int port)
{
std::string api;
if (!LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, api))
if (!LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, str_to_wstr(api)))
return nullptr;
USBDevice* dev = SingstarDevice::CreateDevice(port, api);

View File

@ -28,6 +28,7 @@
#include "../qemu-usb/vl.h"
#include "../qemu-usb/desc.h"
#include "usb-mic-singstar.h"
#include "../shared/inifile.h"
#include <assert.h>
static FILE* file = NULL;
@ -777,7 +778,7 @@ namespace usb_mic
USBDevice* SingstarDevice::CreateDevice(int port)
{
std::string api;
LoadSetting(nullptr, port, SingstarDevice::TypeName(), N_DEVICE_API, api);
LoadSetting(nullptr, port, SingstarDevice::TypeName(), N_DEVICE_API, str_to_wstr(api));
return SingstarDevice::CreateDevice(port, api);
}
USBDevice* SingstarDevice::CreateDevice(int port, const std::string& api)
@ -790,7 +791,7 @@ namespace usb_mic
s->audsrcproxy = RegisterAudioDevice::instance().Proxy(api);
if (!s->audsrcproxy)
{
SysMessage(TEXT("singstar: Invalid audio API: '%") TEXT(SFMTs) TEXT("'\n"), api.c_str());
Console.WriteLn("singstar: Invalid audio API: '%s'\n", api.c_str());
delete s;
return NULL;
}

View File

@ -1044,7 +1044,7 @@ namespace usb_msd
s->file = wfopen(var.c_str(), TEXT("r+b"));
if (!s->file)
{
SysMessage(TEXT("usb-msd: Could not open image file '%s'\n"), var.c_str());
Console.WriteLn("usb-msd: Could not open image file '%s'\n", var.c_str());
goto fail;
}

View File

@ -28,6 +28,7 @@
#include "versionproxy.h"
#include "usb-pad-dx.h"
#include "../../shared/inifile.h"
namespace usb_pad
{
@ -1227,7 +1228,7 @@ namespace usb_pad
ClearSection(section);
SaveSetting(section, _T("INVERTFORCES"), INVERTFORCES[port]);
SaveSetting(section, _T("# CONTROL n"), "GUID,MAPPING TYPE,MAPPED TO,INVERTED,HALF,LINEAR,OFFSET,DEADZONE");
SaveSetting(section, _T("# CONTROL n"), str_to_wstr("GUID,MAPPING TYPE,MAPPED TO,INVERTED,HALF,LINEAR,OFFSET,DEADZONE"));
for (auto& control : g_Controls[port])
{
@ -1249,7 +1250,7 @@ namespace usb_pad
}
swprintf_s(text, _T("CONTROL %i"), cid);
SaveSetting(section, text, ss.str());
SaveSetting(section, text, str_to_wstr(ss.str()));
}
SaveSetting(section, _T("GAINZ"), GAINZ[port][0]);
@ -1284,7 +1285,7 @@ namespace usb_pad
std::stringstream ss;
swprintf_s(text, _T("CONTROL %i"), cid);
if (!LoadSetting(section, text, control))
if (!LoadSetting(section, text, str_to_wstr(control)))
continue;
ss << control;

View File

@ -15,6 +15,7 @@
#include "PrecompiledHeader.h"
#include <math.h>
#include <dinput.h>
#include "dx.h"
#define SAFE_DELETE(p) \

View File

@ -17,6 +17,7 @@
#include "padproxy.h"
#include "usb-pad.h"
#include "../qemu-usb/desc.h"
#include "../shared/inifile.h"
namespace usb_pad
{
@ -538,11 +539,11 @@ namespace usb_pad
USBDevice* PadDevice::CreateDevice(int port)
{
std::string varApi;
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, varApi);
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, str_to_wstr(varApi));
PadProxyBase* proxy = RegisterPad::instance().Proxy(varApi);
if (!proxy)
{
SysMessage(TEXT("PAD: Invalid input API.\n"));
Console.WriteLn("USB: PAD: Invalid input API.\n");
USB_LOG("usb-pad: %s: Invalid input API.\n", TypeName());
return NULL;
}
@ -662,11 +663,11 @@ namespace usb_pad
USBDevice* RBDrumKitDevice::CreateDevice(int port)
{
std::string varApi;
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, varApi);
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, str_to_wstr(varApi));
PadProxyBase* proxy = RegisterPad::instance().Proxy(varApi);
if (!proxy)
{
SysMessage(TEXT("RBDK: Invalid input API.\n"));
Console.WriteLn("RBDK: Invalid input API.\n");
USB_LOG("usb-pad: %s: Invalid input API.\n", TypeName());
return NULL;
}
@ -731,11 +732,11 @@ namespace usb_pad
USBDevice* BuzzDevice::CreateDevice(int port)
{
std::string varApi;
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, varApi);
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, str_to_wstr(varApi));
PadProxyBase* proxy = RegisterPad::instance().Proxy(varApi);
if (!proxy)
{
SysMessage(TEXT("Buzz: Invalid input API.\n"));
Console.WriteLn("Buzz: Invalid input API.\n");
USB_LOG("usb-pad: %s: Invalid input API.\n", TypeName());
return NULL;
}

View File

@ -18,6 +18,7 @@
#include "usb-pad.h"
#include "../qemu-usb/desc.h"
#include "../usb-mic/usb-mic-singstar.h"
#include "../shared/inifile.h"
namespace usb_pad
{
@ -391,19 +392,19 @@ namespace usb_pad
USBDevice* SeamicDevice::CreateDevice(int port)
{
std::string varApi;
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, varApi);
LoadSetting(nullptr, port, TypeName(), N_DEVICE_API, str_to_wstr(varApi));
PadProxyBase* proxy = RegisterPad::instance().Proxy(varApi);
if (!proxy)
{
SysMessage(TEXT("PAD: Invalid input API.\n"));
Console.WriteLn("USB: PAD: Invalid input API.\n");
USB_LOG("usb-pad: %s: Invalid input API.\n", TypeName());
return NULL;
}
USB_LOG("usb-pad: creating device '%s' on port %d with %s\n", TypeName(), port, varApi.c_str());
USB_LOG("usb-pad: creating device '%s' on port %d with %s\n", TypeName(), port, str_to_wstr(varApi));
std::string api;
if (!LoadSetting(nullptr, port, usb_mic::SingstarDevice::TypeName(), N_DEVICE_API, api))
if (!LoadSetting(nullptr, port, usb_mic::SingstarDevice::TypeName(), N_DEVICE_API, str_to_wstr(api)))
return nullptr;
USBDevice* mic = usb_mic::SingstarDevice::CreateDevice(port, api);

View File

@ -72,12 +72,12 @@
</ClCompile>
<Link>
<LargeAddressAware>Yes</LargeAddressAware>
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;rpcrt4.lib;iphlpapi.lib;dsound.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;rpcrt4.lib;iphlpapi.lib;dsound.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;rpcrt4.lib;iphlpapi.lib;dsound.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;rpcrt4.lib;iphlpapi.lib;dsound.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Devel|x64'">comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;rpcrt4.lib;iphlpapi.lib;dsound.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Release|x64'">comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;rpcrt4.lib;iphlpapi.lib;dsound.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;rpcrt4.lib;iphlpapi.lib;dsound.lib;dxguid.lib;dinput8.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;rpcrt4.lib;iphlpapi.lib;dsound.lib;dxguid.lib;dinput8.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;rpcrt4.lib;iphlpapi.lib;dsound.lib;dxguid.lib;dinput8.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;rpcrt4.lib;iphlpapi.lib;dsound.lib;dxguid.lib;dinput8.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Devel|x64'">comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;rpcrt4.lib;iphlpapi.lib;dsound.lib;dxguid.lib;dinput8.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Release|x64'">comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;rpcrt4.lib;iphlpapi.lib;dsound.lib;dxguid.lib;dinput8.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
@ -862,6 +862,9 @@
<ProjectReference Include="..\..\..\3rdparty\fmt\fmt.vcxproj">
<Project>{449ad25e-424a-4714-babc-68706cdcc33b}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\3rdparty\libsamplerate\libsamplerate.vcxproj">
<Project>{47afdbef-f15f-4bc0-b436-5be443c3f80f}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\3rdparty\portaudio\build\msvc\portaudio.vcxproj">
<Project>{0a18a071-125e-442f-aff7-a3f68abecf99}</Project>
</ProjectReference>