在外部.dll

时间:2018-08-19 06:32:57

标签: .net vba vb.net com-interop

尽管在这里和其他地方都在寻找我的问题的答案,但希望能为困扰我几天的问题寻求帮助

我编写了一个VB.Net插件,该插件可插入Alphacam的API。我已经将该插件在许多站点上进行了核心工作。当前站点都使用32位VBA,并且我的插件已编译为x86,可以正常工作,但是Alphacam现在仅使用64位VBA。 将Visual Studio项目设置为使.dll COM可见,并注册COM Interop。 我有一个VBA项目,正在按以下方式使用哪个VBA,然后调用相应的.dll

#If VBA7 Then
'Set up menu to suit 64bit VBA
'Collect button clicks to call Function to call numerous forms in 64bit .dll

'Call About Form in .dll
Public Function CallAboutForm()
Dim MyAboutForm As New My64BitDLL.AboutForm
MyAboutForm.show
End Function

Else

Endif

使用AdvancedInstaller将加载项安装到计算机特定的路径,以便Alphacam可以找到VBA项目来加载菜单。 .dll和.tlb文件安装在同一位置。

在我的开发计算机上,代码按预期工作,但是在生产计算机上安装插件时,它在“ MyAboutForm.show”失败,并且错误消息显示“运行时错误'429'ActiveX组件无法创建对象”

我也尝试过如下调用表单

Dim MyAboutForm As Object
Set MyAboutForm = New My64Bitdll.AboutForm
MyAboutForm.Show

这在开发机器上也可以按预期工作,但在生产机器上却不行。

还尝试使用AdvancedInstaller单独注册.dll,单独注册.tlb,以及同时注册.dll和.tlb文件。还尝试了没有AdvancedInstaller注册的情况。无论使用哪种注册,错误都是相同的。

VBA在生产计算机上按预期进行编译,但是当VBA调用.dll时会失败

任何帮助将不胜感激

0 个答案:

没有答案