我负责维护C#应用程序(VS 2005)。这个C#应用程序调用一个DLL(“mydll.dll”)。我需要对有问题的dll进行一些更改。
我有一个用Visual Basic 6.0编写的文件“mydll.vbp”。我在Visual Studio中进行了更改,然后从Visual Basic界面“制作”mydll“”。
问题是,现在,每次我尝试在C#的debbuger模式下从“mydll.dll”实例化一个类时,我都有以下“InvalidCastException”
无法将mydll.ClassFrommydll类型的COM对象强制转换为接口类型mydll._ClassFrommydll'。此操作失败,因为对于具有IID“{384FB79F-B636-4655-9441-8222692AB8AE}”的接口的COM组件上的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE)) 。
我试图重新引用有问题的dll ...但这并没有改变任何东西。
有关它可能来自何方的任何想法?
非常感谢所有可以提供帮助的yopu。几天来一直坚持这个问题。开始感受压力......
答案 0 :(得分:4)
标记主类[STAThread] 你的问题将得到解决
答案 1 :(得分:3)
我使用IBM Dll遇到了这个确切的问题。
bysort Name (Member) : drop if (Wanted1 == 1 & Name == Name[_n-1]) | ///
(Wanted1 == 0 & Name == Name[_n-1])
list, sepby(Name)
+-----------------------------------+
| Name Member Wanted1 Wanted2 |
|-----------------------------------|
1. | AAA 0 1 1 |
|-----------------------------------|
2. | BBB 0 0 0 |
|-----------------------------------|
3. | CCC 1 1 1 |
+-----------------------------------+
为我解决了所有COM接口均可用且已清除异常的问题
答案 2 :(得分:0)
从班级中删除所有GUID和“ComVisible”属性, 然后将AssemblyInfo-File中的[assembly:ComVisible(true)]属性切换为'true'。