2010-04-23 79 views
2

我有一个工程样例项目,当从编译VB6调用但不是从IDE或Excel的VBE调用。为什么不能从VB IDE(VB6和VBA)调用RegFree COM和.NET?

有3个DLL QA.DLL,QB.DLL,QAW.DLL。 QA用C#.NET编写,QB和QAW用VB6编写。 QAW是QA的COM包装器。

在调用代码中,我创建一个激活上下文并加载清单文件。

所有从VB6创建的exe文件都可以正常工作,但不能在VB6或Excel的VBA中以调试模式运行。

我有zip中的完整示例。

任何想法是什么是不同的IDE调用,为什么它不工作?

许多THX

- DM

+0

我有一个解决方案,但它涉及将.Net dll QA.dll复制到Office11,Office12,VB98等的子目录中。所有COM dll和清单可以放在其他位置,即在网络驱动器上。这种无法满足我的需求的Reg-Free的目的。欢迎任何有关如何使用C风格调用或COM(即从VBA或VB6调用)从网络加载.Net程序集的建议。谢谢 – DangerMouse 2010-04-26 11:50:49

回答

1

这是因为应用程序实际上是从该VB6.EXE所在的目录下运行。你实际上可以把你的DLL和清单放在那里,并让它工作,但是如果你做了很多RegFree开发,那么这个目录很快就会变成一团糟。