【发布时间】:2013-11-25 19:40:08
【问题描述】:
我有一个 VB.net 项目,它构建并注册了一个 COM 库,我可以在我的开发机器上的 Excel 中打开和使用该库。那台机器恰好有 32 位 Excel。在我的另一台机器上,Excel 以 64 位安装,无法打开库,429。
其他线程建议代码本身可能没问题,只要我在“Any”下编译。
正确吗?为“any”编译的代码通常能够在 32 位和 64 位上运行吗?
相同的线程表明唯一真正的问题是 tlb/registration,并指向建议手动调用 regasm 以避免这种情况的文章。
这是正确的吗?
如果是这样,我应该有两个 tlb 文件吗?还是两个 COM 库?还是只有一个?
【问题讨论】:
-
我认为您不能同时使用 32 位和 64 位库。如果您的应用程序以 64 位运行,则不能使用 32 位 COM 库(反之亦然)。另请阅读this answer on SO。
-
不,那不一样。我想将 64 位加载到 64 位,将 32 位加载到 32 位。他们试图将 32 位加载到 64 位。
-
如果我错了,请纠正我:如果安装了 32 位版本的 Excel,您希望以 32 位运行您的应用程序;否则,如果安装了 64 位 Excel,则以 64 位运行您的应用程序?
-
正确。但它是一个 DLL,而不是一个应用程序。
-
如果您使用“任何 CPU”设置编译 DLL,它应该能够在 32 位和 64 位下运行。将使用此 DLL 的“主”应用程序将确定它是在 32 位还是 64 位下运行。我会说,试一试,看看它是否有效。
标签: vb.net excel-2010