我有一个相当奇怪的问题。我正在将界面从C#库中导出到com。我已经启用了“使用COM”项目设置的“寄存器”,因此它调用TLBExp.exe制作类型LIB。

我们在我们的方法名称上使用骆驼盒,我注意到导出的类型库会更改这些与班级名称相吻合到帕斯卡案的任何方法...

例如

interface IFoo
{
void randomClass()
}

class RandomClass
{
}

lib类型中的导出ifoo定义了ifoo-> randomclass(),而不是ifoo-> randomclass()

关于什么原因导致这一点以及如何阻止它的任何想法?

有帮助吗?

解决方案

由于COM对细胞不敏感,因此“ RandomClass”和“ RandomClass”都是输出库表中相同的符号。 (这是.NET指南建议使用班级名称和方法的pascalcasscas的部分原因。)

选择的人将是编译器发出的第一个,从程序员的角度来看,这是相当不确定性的!

您可以使用tlbexp选择一个或另一个 /names 参数,但两个套管 不能 在图书馆共存。

要使用TLBEXP的名称文件,您只需创建一个带有标识符列表的文件,每行:

RandomClass
SomeOtherIdentifier

然后,您称其为:

tlbexp MyAssembly.dll /names=MyNames.txt

然后,TLBEXP将使用名称文件中定义的符号的版本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top