我正在将我的代码从 VSTO 移动到 ExcelDna,我遇到了一个奇怪的错误。
我在 Visual Studio 中创建了一个新项目,其中将包含我以前的 VSTO 函数。为了生成 .tlb 文件,然后我将在 Excel VBA 中引用该文件以访问 VBA 中的这些函数,我选中了“Register for COM interop”选项
对于一个功能,我有错误:
“程序集“C:\MyProj.dll”无法转换为类型库。类型库导出器在处理“GetArrayObject”时遇到错误。错误:类型不匹配。”
Com可见界面中函数GetArrayObject的定义为:
[ComVisible(true)]
//[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IAddInUtilities
{
object[,] GetArrayObject(string[] rows = null);
}
以下定义有效:
object[,] GetArrayObject(string[] rows);
它是 COM 中的已知限制吗?可能是由于 C++ 的限制(数组参数的默认值)吗?它是否适用于 VSTO 而不适用于 COM?
非常感谢你的帮助