2011-09-22 19 views
5

संपादित करें: अच्छा ... यह बहुत दिलचस्प है। मैंने एक पॉइंटर में सेटिंग्स बनाई और उसे पारित किया। खूबसूरती से काम किया। तो, यह हल हो गया है। मैं जवाब के उत्सुक किसी के लिए इसे खोल दूंगा।एफएमओडी मेमोरी स्ट्रीम समस्या

मुझे स्मृति स्ट्रीम से एफएमओडी में ध्वनि बनाने में कोई समस्या है। मैंने लोडमोमेमरी उदाहरण को एफएमओडी के साथ भेज दिया और उसके बाद देखा। सबसे पहले, कोड मैं उपयोग कर रहा हूँ ...

CSFX::CSFX(CFileData *fileData) 
{ 
FMOD_RESULT result; 
FMOD_CREATESOUNDEXINFO settings; 
settings.cbsize = sizeof(FMOD_CREATESOUNDEXINFO); 
settings.length = fileData->getSize(); 
_Sound = 0; 
std::string temp = ""; 

for (int i = 0; i < fileData->getSize(); i++) 
    temp += fileData->getData()[i]; 

result = tempSys->createSound(temp.c_str(), FMOD_SOFTWARE | FMOD_OPENMEMORY, &settings,  &_Sound); 
} 

इसे इस तरह है, मैं tempSys- पर एक पहुँच उल्लंघन मिल> createSound()। मैंने पुष्टि की है कि tempSys मान्य है क्योंकि यह फ़ाइल से ध्वनि बनाते समय काम करता है। मैंने char * की पुष्टि भी की है क्योंकि मेरे डेटा को एक फ़ाइल में सामग्री लिखकर वैध है, जिसे मैं मीडिया प्लेयर में खोलने में सक्षम था। मुझे लगता है कि सेटिंग्स के साथ एक समस्या है। यदि मैं उस पैरामीटर को 0 पर बदलता हूं, तो प्रोग्राम उड़ता नहीं है और मैं परिणाम = FMOD_ERR_INVALID_HANDLE के साथ समाप्त होता हूं (जो 3 पैरामीटर पर विचार करने में समझ में आता है 0)। कोई विचार क्या मैं गलत कर रहा हूँ?

इसके अलावा, कृपया std :: स्ट्रिंग के उपयोग की उपेक्षा करें, मैं इसे कुछ परीक्षण उद्देश्यों के लिए उपयोग कर रहा था।

उत्तर

2

एक पॉइंटर में सेटिंग्स को बदलकर हल किया गया। नीचे कोड देखें:

CSFX::CSFX(CFileData *fileData) 
{ 
FMOD_RESULT result; 
FMOD_CREATESOUNDEXINFO * settings; 

_Sound = 0; 
std::string temp = ""; 

for (int i = 0; i < fileData->getSize(); i++) 
    temp += fileData->getData()[i]; 
settings = new FMOD_CREATESOUNDEXINFO(); 
settings->cbsize = sizeof(FMOD_CREATESOUNDEXINFO); 
settings->length = fileData->getSize(); 

result = tempSys->createSound(temp.c_str(), FMOD_SOFTWARE | FMOD_OPENMEMORY, settings, &_Sound); 
delete settings; 
settings = 0; 
} 
1

आपको इसका उपयोग करने से पहले सेटिंग्स को याद करने की आवश्यकता है।

memset (& सेटिंग्स, 0, sizeof (FMOD_CREATESOUNDEXINFO);।

अन्यथा यह कचरा में शामिल होंगे और संभावित दुर्घटना

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^