Excel VBA中的C#COM互操作DLL
当试图从一个已经存在的DLL源代码构build一个在Excel VBA中使用的DLL时,我陷入了第一步。
源代码看起来像这样
using System; using System.Runtime.InteropServices; using System.Text; namespace ZCon { public class ZConsts { #if __MonoCS__ public const string ZLibrary = "zcon.so"; #else public const string ZLibrary = "zcon.dll"; #endif } public class ZClient { [DllImport(ZConsts.ZLibrary)] protected static extern int WriteIt(IntPtr Client, int Len, byte[] Buffer); public int WriteArea(int Len, byte[] Buffer) { return WriteIt(Client, Len, Buffer); } } }
我并不确定与命名空间有关的'DllImport'。
程序集应该是COM可见的,Visual Studio注册COM互操作。 现在我想用RegAsm.exe在另一个系统上注册它。
我有Framework / v4.0 …和Framwork64 / v4.0 …,64位Windows和x86-Excel-2013。
首先,我尝试了目标系统:任何CPU和RegAsm.exe的注册只适用于Framework64版本(“types注册成功”)。
RegAsm.exe ZConCOM.dll / codebase
也试过了
RegAsm.exe ZConCOM.dll /tbl:ZConCOM.tbl / codebase
现在我想在VBA编辑器和DLL中设置引用以及TBL不会显示在Windows / system32中(通过“参考”中的“浏览”)。
在Visual Studio中使用x86作为目标系统的另一个尝试也失败了。