[英]iTunes COM interface - Cannot add song to library
我試圖將一個簡單的.mp3文件添加到iTunes庫中,但是當我調用AddFile()時,程序始終崩潰。 但是,當我調用get_Tracks()時,它返回一個有效的指針,因此我認為指向IITLibraryPlaylist的指針是有效的。 我究竟做錯了什么?
IiTunes* p_iTunes;
IITLibraryPlaylist* p_Library;
IITOperationStatus* status;
IITTrackCollection* iTrackCollection;
CoInitialize(0);
if (FAILED(CoCreateInstance(CLSID_iTunesApp, NULL, CLSCTX_LOCAL_SERVER, IID_IiTunes, (PVOID *)&p_iTunes))){
p_iTunes->Release();
CoUninitialize();
}
else{
p_iTunes->get_LibraryPlaylist(&p_Library);
p_Library->get_Tracks(&iTrackCollection); // This works, so I suppose p_Library is valid..
long trackCount = 0;
iTrackCollection->get_Count(&trackCount);
p_Library->AddFile(L"C:\\asd\asd.mp3",&status); // crashes here
}
問題是您傳遞WCHAR*
而不是正確分配的BSTR
, 這導致未定義的行為 。
您應該首先使用SysAllocString()
分配BSTR
(不要忘記稍后釋放該字符串),或者最好使用ATL::CComBSTR
或_bstr_t
類的包裝器類來管理BSTR
壽命。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.