C# 结合两个.dll进行MS访问

C# 结合两个.dll进行MS访问,c#,.net,ms-access,dll,itext,C#,.net,Ms Access,Dll,Itext,我已经在VisualStudio中使用类库创建了一个项目,并用C编写,该项目使用类库 该项目有两个dll:project.dll和itextsharp.dll 我希望能够在其他用户的笔记本电脑中使用此项目,以便他们可以在MS Access VBA中使用它 我已经在一个简单的项目上对此进行了测试。我创建了一个类库,并将.dll文件复制到其他用户的pc上。 然后我使用regasm testFile.dll/tlb:testFile.tlb/codebase注册了它。 然后,我能够在VBA Acces

我已经在VisualStudio中使用类库创建了一个项目,并用C编写,该项目使用类库

该项目有两个dll:project.dll和itextsharp.dll

我希望能够在其他用户的笔记本电脑中使用此项目,以便他们可以在MS Access VBA中使用它

我已经在一个简单的项目上对此进行了测试。我创建了一个类库,并将.dll文件复制到其他用户的pc上。 然后我使用regasm testFile.dll/tlb:testFile.tlb/codebase注册了它。 然后,我能够在VBA Access编辑器中打开引用testFile.tlb文件的MS Access

但现在我有一个项目,其中有itextsharp,我不知道该怎么办。 我试着像上面那样使用regasm,它确实创建了一个.tlb文件,但没有注册它的dll

我还尝试在project.dll和itextsharp.dll上使用,但这并没有产生一个强名称,尽管这两个dll都有一个强名称,如果我理解正确,它需要一个强名称才能工作

我试图通过使用为合并的dll提供一个强名称,但当我尝试使用sn-v mergeFile.dll检查它是否具有强名称时,它返回的mergeFile.dll并不代表一个强名称程序集


有没有办法将这些.dll合并成一个,或者有没有办法将itextsharp库插入到项目.dll中?

我知道如何在VBA中使用itextsharp而不合并dll

要在Access VBA中使用C代码,您需要能够添加C DLL作为Access VBA编辑器的引用。 在DataCam中执行此操作时,我们需要使用一个名为ed iTextSharp.dll的第三方库,当您想在VBA中使用它时,这会使事情变得棘手

请执行以下操作:

在VisualStudio中

创建C项目时,请选择类库模板 下载iTextSharp DLL并将其添加到项目中 编写你的C代码 转到“项目”选项卡 选择项目的属性 选择应用程序选项卡 选择部件信息 勾选“使部件COM可见” 选择Build选项卡 COM互操作的勾选寄存器 选择签名选项卡 在组件上打勾 选择强名称密钥文件 使用现有密钥文件或创建新密钥文件 完成后,在屏幕顶部选择Build 这将创建需要在VBA中使用的DLL、TLB和PDB文件。这些文件可以在项目的bin、Debug文件夹中找到 注册文件

将项目的DLL、TLB和PDB文件复制到计算机的SysWOW64文件夹 同时将iTextSharp的DLL和TLB文件从同一文件夹复制到SysWOW64 以管理员身份打开命令提示符 使用命令Regasm.exe注册项目的DLL文件 例1: Regasm.exe project.dll/tlb:project.tlb/codebase 例2: C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe C:\Windows\SysWOW64\projectName.dll/tlb:projectName.tlb/codebase 在Access VBA中

进入VBA编辑器 选择工具,然后选择引用 选择项目的TLB和iTextSharp的DLL文件 现在,您将能够在VBA中使用C代码 注1:

我编写的C方法可以在VBA中使用,但我必须排除括号

例如

methodNameHello,World-在VBA中不起作用

methodName你好,World-在VBA工作

注2:

如果您更新了项目并希望将其添加到VBA中,请确保注销旧的DLL


要执行此操作,请使用Regasm.exe project.dll/u

您已将iTextSharp链接到Sourceforge,但它在那里不再可用。请链接到itextpdf.com或github.com/itext。