में DSUtils युक्त संकुल को संकलित नहीं कर सकता है। मैं DSUtils.pas (DSPack का हिस्सा) वाले संकुल को संकलित करने का प्रयास कर रहा हूं और यह विफल रहता है क्योंकि यह गलत DirectShow9.pas इकाई को संकलित करने का प्रयास करता है - डीएसपीएक से नहीं, लेकिन डेल्फी एक्सई 2 (अपडेट 3) आरटीएल से एक।XE2
समस्या एक न्यूनतम पैकेज के साथ दोहराया जा सकता है: DSUtils लाइन 1058 में
package Package1;
{$R *.res}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION OFF}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE DEBUG}
{$ENDIF IMPLICITBUILDING}
{$IMPLICITBUILD ON}
requires
rtl;
contains
DSUtils in 'x:\common\pkg\dspack\src\DSPack\DSUtils.pas';
end.
त्रुटि होती है और त्रुटि Undeclared identifier: FrameRateCode
है। CtrlClick परिणाम पर Winapi.DirectShow9 करने के लिए हमें लाता है (RTL फ़ोल्डर में) जो इस क्षेत्र घोषित नहीं है -
Result.FrameRateCode := (x and $00000003) shr 00;
अघोषित 'FrameRateCode' है।
दिलचस्प हिस्सा - यदि मैं DSUtils सूची में जाता हूं, तो डायरेक्टशो 9 पर क्लिक करें और Ctrl + Enter दबाएं, इकाई का डीएसपीक संस्करण खुल जाएगा (और इस इकाई में फ्रेमरेट कोड फ़ील्ड परिभाषित है)। तो डेल्फी जानता है कि इकाई कहां है। यह सिर्फ गलत DirectShow9 का उपयोग करके पैकेज को संकलित करने का प्रयास करता है।
दिलचस्प बोली: यदि मैं एक सामान्य अनुप्रयोग (गैर-पैकेज) संकलित कर रहा हूं जो DSUtils का उपयोग करता है, तो सब कुछ ठीक काम करता है।
क्या मैं कोशिश की है:
अपनी ही पैकेज में DSPack से DirectShow9 संकलन और (वास्तव में मैं जो DirectX9 फ़ोल्डर से सभी फ़ाइलें हैं DSPack से DirectX9 पैकेज प्रयोग किया जाता) 'की आवश्यकता है में जोड़ने ' सूची। काम नहीं करता
डायरेक्टशो 9 फ़ाइल (डीएसपीएक्स से) के साथ फ़ोल्डर को सिस्टम पथ और रीबूटिंग की शुरुआत में जोड़ना। काम नहीं करता
लाइब्रेरी पथ की शुरुआत में DirectShow9 फ़ाइल के साथ फ़ोल्डर जोड़ना। काम नहीं करता
स्पष्ट पथ के साथ पैकेज में DirectShow9 इकाई जोड़ना। काम नहीं करता
डायरेक्टएक्स 9 * .pas को डीएसपीएक्स फ़ोल्डर में कॉपी करना ताकि डायरेक्टशो 9 इकाई DSUtils इकाई के समान फ़ोल्डर में हो। काम नहीं करता
मुझे तीन संभावित कामकाज दिखाई देते हैं, लेकिन मैं उनमें से किसी से भी खुश नहीं हूं।
मैं समस्याग्रस्त कोड पर टिप्पणी कर सकता हूं। सौभाग्य से, यह केवल एक ही पंक्ति है, बाकी सब कुछ डेल्फी के डायरेक्टशो 9 के साथ संकलित है।
मैं डीएसपीएक्स से डायरेक्टशो 9 का नाम बदल सकता हूं लेकिन फिर मुझे विभिन्न अनुप्रयोगों में 'उपयोग' भाग को ठीक करना पड़ सकता है।
मैं 'Winapi' के साथ स्वचालित उपसर्ग को बंद कर सकता हूं। लेकिन इससे मुझे हजारों और हजारों फाइलों को संपादित करने के लिए बहुत सारे अतिरिक्त काम आएंगे।
मैं वास्तव में क्या देखना चाहूंगा कि सही स्रोत फ़ाइल का उपयोग करने के लिए XE2 प्राप्त हो रहा है।
आप DirectShow9.pas इकाई जोड़ने की कोशिश की है
एक अन्य विकल्प नवीनतम DSPack (जो XE2 के साथ संगत है) का उपयोग करने के लिए है पैकेज में? मुझे याद है कि मुझे थोड़ी देर पहले एक ही समस्या थी, लेकिन मैं इसे डी 2010 में स्थापित करने की कोशिश कर रहा था, मैंने इसे न्यूनतम परिवर्तनों के साथ ठीक करने में कामयाब रहा है, लेकिन मुझे याद नहीं है कि मैंने यह कैसे किया, यह लगभग 2 साल है): – ComputerSaysNo
ओह, हाँ, यह भी कोशिश की। मैं सवाल अपडेट करूंगा। – gabr
लानत ... मुझे चिंता है कि उन्होंने XE2 में कुछ तोड़ दिया ... क्या आपने इसे D2010 में स्थापित करने का प्रयास किया है? – ComputerSaysNo