从vb.net DLL到c#DLL的后期绑定调用

时间:2018-07-25 13:32:13

标签: c# .net vb.net dll

我知道上面的问题可能是seen here,但我一直在努力理解为什么它在我的应用程序中失败了。

我有一个正在调用c#dll的vb.net dll。这是第三方dll,因此我无法控制它。我知道它是编写并编译到.net 4.5。

如果我在vb.net中编写了一个简单的.net 4.5应用程序,后来又调用了dll,则一切工作正常。实例已创建,我可以调用这些方法。

        Dim comType = Type.GetTypeFromProgID("MyDLL.MyClass", True)
        _comObject = Activator.CreateInstance(comType)

但是,如果我从vb.net dll进行相同的调用,则在尝试创建实例时会出现错误消息

  

System.Reflection.TargetInvocationException:调用的目标引发了异常。 ---> System.Runtime.InteropServices.SEHException:外部组件引发了异常。      在DesktopApi.Native.PInvoke.Init()      在DesktopApi.DesktopApi..ctor()      ---内部异常堆栈跟踪的结尾---      在System.RuntimeTypeHandle.CreateInstance(RuntimeType类型,布尔publicOnly,布尔noCheck,布尔&canBeCached,RuntimeMethodHandleInternal&ctor,布尔&bNeedSecurityCheck)      在System.RuntimeType.CreateInstanceSlow处(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark和stackMark)      在System.RuntimeType.CreateInstanceDefaultCtor处(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark和stackMark)      在System.Activator.CreateInstance(Type type,Boolean nonPublic)      在System.Activator.CreateInstance(Type type)

关闭严格选项,打开显式选项。它正在编译为x86的目标cpu。这些选项与我创建的简单应用程序没有什么不同。

有人有想法吗?我已经在网上搜索了,但没有找到任何东西。令人恼火的是,所有这一切一直起作用,直到供应商更新为止。而且因为它可以在简单的应用程序中工作,所以他们并不真正感兴趣。

0 个答案:

没有答案