2010-06-28 10 views
5

बदलता है मैं एक नहीं बल्कि अजीब समस्या है। मैं सी # लाइब्रेरी से COM तक एक इंटरफ़ेस निर्यात कर रहा हूं। मैं सक्षम किया है, परियोजना सेटिंग 'कॉम के साथ रजिस्टर', तो यह प्रकार libs बनाने के लिए tlbexp.exe कहता है।tlbexp.exe विधि के नाम 'मामले

हम अपने विधि के नाम पर ऊंट मामले का उपयोग करें और मैंने देखा निर्यात प्रकार लायब्रेरी इन कोई भी तरीका है कि पास्कल मामले में वर्ग का नाम के साथ मेल खाना करने के लिए होता बदलता है कि ...

जैसे

interface IFoo 
{ 
void randomClass() 
} 

class RandomClass 
{ 
} 

टाइप lib में निर्यात किया गया IFoo IFoo-> randomRass() को यादृच्छिक क्लास()

किसी भी विचार पर इसका क्या कारण है और इसे कैसे रोकें?

उत्तर

6

कॉम के बाद केस-संवेदी है, दोनों "RandomClass" और "randomClass" उत्पादन लाइब्रेरी की तालिका में एक ही प्रतीक है। (यह कारण है कि .NET दिशानिर्देश कक्षा के नामों और विधियों के लिए पास्कलसीजिंग की सलाह देते हैं।)

जो चुना जाता है वह पहला होगा जो संकलक उत्सर्जित करता है, और यह प्रोग्रामर के बिंदु से काफी गैर-निर्धारक है मानना ​​है कि!

आप एक या अन्य, tlbexp के /names पैरामीटर का उपयोग करने के लिए चुन सकते हैं, लेकिन दोनों की बॉडी नहीं पुस्तकालय में साथ नहीं हो सकते।

उपयोग करने के लिए tlbexp के नाम फ़ाइल, तो आप बस, पहचानकर्ताओं की सूची के साथ एक फ़ाइल बनाने के प्रति पंक्ति:

RandomClass 
SomeOtherIdentifier 

तो फिर तुम यह इतना की तरह फोन:

tlbexp MyAssembly.dll /names=MyNames.txt 

tlbexp तो उपयोग करेगा नाम फ़ाइल में परिभाषित प्रतीक का संस्करण।

+0

धन्यवाद! मैं इसके बारे में कभी नहीं जानता था। – ljbade

+0

वहाँ किसी भी तरह से/नाम जब यह/tlb करता है का उपयोग करने के Regasm उपयोग करने के लिए है? – Squirrel

+0

@ स्क्वायरेल: मुझे नहीं पता कि मैं जानता हूं। – porges