我有一个相当奇怪的问题。
我正在将接口从 C# 库导出到 COM。
我已启用“使用 COM 注册”项目设置,因此它调用 tlbexp.exe 来创建类型库。
我们在方法名称上使用驼峰式大小写,我注意到导出的类型库将这些恰好与类名一致的方法更改为 Pascal 大小写...
e.g
interface IFoo
{
void randomClass()
}
class RandomClass
{
}
类型库中导出的 IFoo 定义了 IFoo->RandomClass() 而不是 IFoo->randomClass()
关于造成这种情况的原因以及如何阻止它有什么想法吗?
由于 COM 不区分大小写,因此“RandomClass”和“randomClass”在输出库的表中是相同的符号。 (这就是 .NET 指南推荐类名和方法使用 PascalCasing 的部分原因。)
被选择的将是编译器发出的第一个,从程序员的角度来看,这是相当不确定的!
您可以使用 tlbexp 来选择其中之一/names
参数,但两种情况cannot共存于图书馆。
要使用 tlbexp 的名称文件,您只需创建一个包含标识符列表的文件,每行一个:
RandomClass
SomeOtherIdentifier
然后你这样称呼它:
tlbexp MyAssembly.dll /names=MyNames.txt
然后 tlbexp 将使用名称文件中定义的符号版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)