2013-03-13 10 views
5

मेरे पास एक tlb फ़ाइलें हैं जिनमें कुछ फ़ंक्शन घोषणा शामिल है जिन्हें मुझे उपयोग करने की आवश्यकता है।देशी सी ++ प्रोजेक्ट में tlb फ़ाइलों का उपयोग कैसे करें

अगर मैं का उपयोग

#import "type_library.tlb" 

मैं correclty मेरे कोड से समारोह देख सकते हैं:

tlb_namespace::required_function(); 

लेकिन जब मैं परियोजना संकलन लिंकर का कहना है कि tlb_namespace :: required_function एक अनसुलझे बाह्य प्रतीक है ।

मैं इस तरह की परियोजना का सफलतापूर्वक निर्माण कैसे कर सकता हूं?

संपादित:

मैं एक डमी VBA का उपयोग परियोजना में एक ही प्रकार के पुस्तकालय का इस्तेमाल किया है। मैंने टाइप लाइब्रेरी का संदर्भ जोड़ा है और मैंने देखा है कि टाइप लाइब्रेरी में निहित कुछ फ़ंक्शन सही तरीके से बुलाए जाते हैं। लेकिन उनमें से कुछ नहीं हैं। वीबीए का कहना है कि यह संबंधित डीएल में अपने प्रवेश बिंदु का पता नहीं लगा सकता है।

क्या यह सी ++ ऐप बनाते समय अनसुलझा बाहरी प्रतीक को समझा सकता है?

मैं भी देखा है कि नाकाम रहने समारोह इस तरह tlb घोषित किये गए हैं:

UPPER_function_name 

लेकिन dll में इस तरह की घोषणा की जाती:

Upper_function_name 

इस मुद्दे हो सकता है?

क्या बाइनरी टीएलबी फ़ाइल या डीएलएल को सीधे संशोधित करने में इस प्रकार की त्रुटि को हल करना संभव है?

+0

'#import" type_library.tlb "है हल होगा आपके प्रोजेक्ट में इस टीएलबी के लिए एकमात्र # आयात निर्देश। क्या यह फ़ंक्शन कॉल के समान सीपीपी में रहता है? जनरेटेड .tlh और .tli फ़ाइलों में परिभाषित 'आवश्यक_फंक्शन' कैसे है? –

+0

@ZdeslavVojkovic अब के लिए प्रोजेक्ट एक बहुत ही सरल है इसलिए #import केवल एक है और यह कॉल की उसी .cpp फ़ाइल में रहता है। मैंने .tlh और .tli फ़ाइलों को उत्पन्न करने का प्रयास किया है ... वे केवल तब दिखाई देते हैं जब मैं प्रोजेक्ट प्रॉपर्टी \ प्रीप्रोसेसर जेनरेट प्रीप्रोसेस्ड फ़ाइल पर जाता हूं। हालांकि मैं शायद उन्हें परियोजना में सही मोड में नहीं जोड़ता क्योंकि अगर मैं करता हूं तो मुझे एक और लिंकर त्रुटि मिलती है। – sblandin

+0

आपको उन्हें जोड़ने की ज़रूरत नहीं है। वे आपके रिलीज/डीबग फ़ोल्डर में निर्माण के दौरान बनाए जाएंगे, इसलिए उन्हें वहां देखें। –

उत्तर

3

टीएलबी जानकारी देखने के लिए आईडीई का उपयोग करें।
इस मदद का उपयोग करें: How to: View Type Library Information

आईडीई पर: देखें> ऑब्जेक्ट ब्राउज़र, क्लिक करें "..." संपादित करें कस्टम घटक सेट, अपने TLB फ़ाइल ब्राउज़ करें और जानकारी देखने के लिए जोड़ें।

नामस्थान नाम की पुष्टि करें। उदाहरण:

+0

देर से प्रतिक्रिया के लिए खेद है। यदि मैं ऑब्जेक्ट ब्राउज़र में tlb फ़ाइल खोलता हूं तो मैं इसे एक लाइब्रेरी के रूप में देखता हूं जिसमें एक एकल नामस्थान होता है जिसमें कई मॉड्यूल होते हैं जो कुछ फ़ंक्शंस को समूहबद्ध करते हैं। जब मैं मूल सी ++ प्रोजेक्ट में tlb को आयात करता हूं तो मुझे केवल नाम वाला नामस्थान मिलता है। जैसा कि मैंने एक वीबीए परियोजना में टीएलबी के संदर्भ को जोड़ने से पहले कहा था, मुझे कार्यों को कॉल करने की अनुमति देता है, लेकिन देशी सी ++ प्रोजेक्ट में मुझे लिंकर त्रुटि मिलती है। – sblandin

0

लिंकर त्रुटि को हल करने नाम स्थान का उपयोग नाम स्थान <>

#import "<>" raw_interfaces_only का उपयोग कर इस समस्या को

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