从C#字符串转换为C++;wchar_t[非托管] 我正在研究一个WrRT应用程序,其中我需要把设备ID从C++类传递给C++对象。ID的格式为: \\?\SWD#MMDEVAPI#{0.0.0.00000000}.{572cb138-dda1-4723-90d7-373f04b795fb}#{e6327cad-dcec-4949-ae8a-991e976a79d2} 这在C++中很好,如果我把它写成: L"\\\\?\\SWD#MMDEVAPI#{0.0.0.00000000}.{572cb138-dda1-4723-90d7-373f04b795fb}#{e6327cad-dcec-4949-ae8a-991e976a79d2}" 不过,如果我把它从C类传递到C++,并把它作为LPCWSTR来处理,它就不起作用了。
C++代码:从C#字符串转换为C++;wchar_t[非托管] 我正在研究一个WrRT应用程序,其中我需要把设备ID从C++类传递给C++对象。ID的格式为: \\?\SWD#MMDEVAPI#{0.0.0.00000000}.{572cb138-dda1-4723-90d7-373f04b795fb}#{e6327cad-dcec-4949-ae8a-991e976a79d2} 这在C++中很好,如果我把它写成: L"\\\\?\\SWD#MMDEVAPI#{0.0.0.00000000}.{572cb138-dda1-4723-90d7-373f04b795fb}#{e6327cad-dcec-4949-ae8a-991e976a79d2}" 不过,如果我把它从C类传递到C++,并把它作为LPCWSTR来处理,它就不起作用了。,c#,c++,windows-runtime,C#,C++,Windows Runtime,C++代码: UniversalAudioPlayer::UniversalAudioPlayer(String^ deviceID) { HRESULT hr = XAudio2Create(&xAudio); if (FAILED(hr)) ref new COMException(hr, "XAudio2Create failure"); XAUDIO2_DEBUG_CONFIGURATION debugConfig = { 0 }; debugConfig.Trace
UniversalAudioPlayer::UniversalAudioPlayer(String^ deviceID)
{
HRESULT hr = XAudio2Create(&xAudio);
if (FAILED(hr))
ref new COMException(hr, "XAudio2Create failure");
XAUDIO2_DEBUG_CONFIGURATION debugConfig = { 0 };
debugConfig.TraceMask = XAUDIO2_LOG_DETAIL | XAUDIO2_LOG_WARNINGS;
xAudio->SetDebugConfiguration(&debugConfig);
hr = xAudio->CreateMasteringVoice(&masteringVoice, 0U, 0U, 0U, (LPCWSTR)deviceID);
if (FAILED(hr))
ref new COMException(hr, "Could not create mastdsdering voice");
xAudio->StartEngine();
}
UniversalAudioPlayer player = new UniversalAudioPlayer("\\\\?\\SWD#MMDEVAPI#{0.0.0.00000000}.{41a5b8e4-ad46-4bcb-b8a0-3621edafd176}#{e6327cad-dcec-4949-ae8a-991e976a79d2}");
C#代码:
UniversalAudioPlayer::UniversalAudioPlayer(String^ deviceID)
{
HRESULT hr = XAudio2Create(&xAudio);
if (FAILED(hr))
ref new COMException(hr, "XAudio2Create failure");
XAUDIO2_DEBUG_CONFIGURATION debugConfig = { 0 };
debugConfig.TraceMask = XAUDIO2_LOG_DETAIL | XAUDIO2_LOG_WARNINGS;
xAudio->SetDebugConfiguration(&debugConfig);
hr = xAudio->CreateMasteringVoice(&masteringVoice, 0U, 0U, 0U, (LPCWSTR)deviceID);
if (FAILED(hr))
ref new COMException(hr, "Could not create mastdsdering voice");
xAudio->StartEngine();
}
UniversalAudioPlayer player = new UniversalAudioPlayer("\\\\?\\SWD#MMDEVAPI#{0.0.0.00000000}.{41a5b8e4-ad46-4bcb-b8a0-3621edafd176}#{e6327cad-dcec-4949-ae8a-991e976a79d2}");
我无法包括
#include < vcclr.h >
#包括
< C++类中的P>,或者WinRT不支持托管程序集。
请给我建议解决办法。提前感谢。您可以使用String::方法将^
有一个好办法,我已经试过了。我不能包括在内。可能是相关的。请添加您的代码,以便更清楚地了解您要执行的操作。@WiredPairie这是我要将szDeviceId从我的C#class传递到的方法。好吧--您编写了哪些不起作用的代码?您如何尝试从一个字符串转换为另一个字符串?您正在使用钉扎、
封送
等吗?非常感谢。没想到解决办法会这么简单。把我从大麻烦中救了出来。