.net DLL 注册 regasm

regasm

regasm myTest.dll

regasm.exe

打开vs2005自带的工具“Visual Studio 2005命令提示”,输入上述命令

在没有安装vs开发环境的电脑上,必须安装。net framwork环境2.0以上,或根据项目要求安装合适的framwork版本。

不能再普通的cmd命令下执行,找不到命令。

进入普通的cmd窗口

cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

进入这个目录下,再执行regasm命令就可以识别了。

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm  d:\app\mytest.dll

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm MyEnCrypt.dll /tlb:MyEncrypt.tlb

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\regasm   test.dll /tlb:test.tlb

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\regasm   IMComInterface.dll  /tlb:IMComInterface.tlb

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\regasm   IMComInterface.dll

32位系统

C:\Windows\Microsoft.NET\v2.0.50727\regasm.exe  IMComInterface.dll

C:\Windows\Microsoft.NET\v4.0.30319\regasm.exe  IMComInterface.dll

64位系统

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\regasm.exe  IMComInterface.dll

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe  IMComInterface.dll

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\regasm.exe /u IMComInterface.dll

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /u IMComInterface.dll

有的dll只能用4.0注册,2.0注册失败。

RegAsm : error RA0000 : “E:\MYDEV\test.dll”不是有效的 .NET 程序集,因 此未能加载它

delphi调用

方法一

打开vs2005自带的工具“Visual Studio 2005命令提示”,输入 TlbExp  路径/TestClass.dll 得到一个TestClass.tlb 文件。

打开Delphi,选择“Project”--“import type library”找到刚才的TestClass.tlb,点击 CreateUnit,生成生成的TLB的pas文件

  var aClass: TestClass; 
  begin
    aClass : =  CoTestClass.Create;
    aClass. YourProcedure ('参数'); 
  end;

方法二、不需生成tlb文件,仿照调用Excel的方式。代码如下:
 var aClass: Variant;
begin
  aClass:= CreateOleObject('TestDll.TestClass');
  aClass.YourProcedure ('参数');
end;

vs2015 c#封装com文件

Properties\AssemblyInfo.cs

[assembly: ComVisible(true)];//从fasel改为true

也可以在工程里改

右键单击工程--》属性--》应用程序--》点击程序集信息--》最下面的复选框(使程序集Com可见)

TlbExp  路径/TestClass.dll 得到一个TestClass.tlb 文件

regasm MyEnCrypt.dll /tlb:MyEncrypt.tlb

TlbExp  TestClass.dll

查找delphi生成的TLb文件里的

Co*** = class
    class function Create: **ComInterface;
    class function CreateRemote(const MachineName: string): **ComInterface;
  end;

imcom:IMComInterface_TLB._CIMComInterface;

imcom := IMComInterface_TLB.CoCIMComInterface.Create;

C++

IMComInterface_TLB.cpp

const GUID CLSID_CIMComInterface =

_CIMComInterface *imcom = CoCIMComInterface::Create();

不用看TLB.h文件了。根据TLB.cpp就可以知道名称进行定义和create了。

IMComInterface_TLB.h

_CIMComInterface *imcom = CoCIMComInterface::Create();

typedef TCoClassCreatorT<TCOM_CIMComInterface, _CIMComInterface, &CLSID_CIMComInterface, &IID__CIMComInterface> CoCIMComInterface;

{F6240F08-CBDB-3E72-87E9-7A9FBD39B554}

IMComInterface.CIMComInterface

.net DLL 注册 regasm delphi调用的更多相关文章

  1. CommMonitor8.0 串口过滤驱动 SDK DLL版本 C#/Delphi调用DEMO

    CommMonitor8.0 SDK DLL 版本,此版本是直接调用DLL. Delphi调用定义: constCommMOnitor8x = ‘CommMOnitor8x.dll’; typeTOn ...

  2. Delphi 调用C# DLL(包含委托)

    例子 C# Dll: using System; using System.Collections.Generic; using System.Text; using System.Diagnosti ...

  3. Delphi调用C# 编写dll动态库

    Delphi调用C# 编写dll动态库 编写C#dll的方法都一样,首先在vs2005中创建一个“类库”项目WZPayDll, using System.Runtime.InteropServices ...

  4. Delphi 调用C# 编写的DLL方法

    近来,因工作需要,必须解决Delphi写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行:    编写C#dll的方法都一样,首先在vs2005中创建一个“ ...

  5. Delphi XE3写DLL,用Delphi7调用,报错!

    http://bbs.csdn.net/topics/390870532 用delphi xe3写的DLL,delphi7调用,参数都是PAnsiChar,DLL里的函数接收delphi7传的入参,没 ...

  6. 发现个delphi调用vc写的Dll中包括pchar參数报错奇怪现象

    发现个delphi调用vc写的Dll中包括pchar參数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会执行报错,在之前随意加上条语句就不报错了奇怪! vc的DLL源代码地址 ...

  7. Delphi 调用C/C++的Dll(stdcall关键字, 会导致函数名分裂. 此时函数名变成_stdadd@8)

    delphi调用C++写的Dll, 当然这个Dll要求是非MFC的Dll, 这样子才能被delphi调用. 根据C++定义函数的情况, Delphi有不同的相对应的处理方法.1. 声明中不加__std ...

  8. Delphi - Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件

    项目背景 应欧美客户需求,需要将文件压缩成.tar.gz格式的文件,并上传给客户端SFTP服务器. 你懂的,7-Zip软件的显著特点是文件越大压缩比越高,在Linux系统上相当于我们Windows系统 ...

  9. 【转】Delphi调用webservice总结

    原文:http://www.cnblogs.com/zhangzhifeng/archive/2013/08/15/3259084.html Delphi调用C#写的webservice 用delph ...

随机推荐

  1. Espresso小试

    Espresso开源了,那就试着用一下, 1. 下载Espresso Espresso没有提供单独的jar包下载,建议clone整个项目或者下载zip包 git clone https://code. ...

  2. 延时队列:Java中的DelayQueue

    Java中的DelayQueue位于java.util.concurrent包下,本质是由PriorityQueue和BlockingQueue实现的阻塞优先级队列. 放入队列的元素需要实现java. ...

  3. HttpServletRequest接收参数的几种方法

    HttpServletRequest接收参数的几种方法 我们经常用servlet和jsp, 经常用request.getParameter() 来得到数据. request.getParameter( ...

  4. SEO 图片用IMG插入好还是用Background定义好?

    主要的区别就是,background搜索引擎室不知道图片内容说什么的.而img,是可以通过alt标签向搜索引擎描述你图片的内容.所以如果这张图片对你网站内容有帮助,那最好用img,如果没有什么用处的话 ...

  5. mysql默认8小时连接断开机制解决

    转载连接:http://www.myexception.cn/database/1639209.html 本文提供了对c3p0与DBCP连接池连接MySql数据库时, 8小时内无请求自动断开连接的解决 ...

  6. redis-5.0.3集群搭建

    首先部署redis-5.0.3,请参考我的另一篇文章 https://www.cnblogs.com/djlsunshine/p/10592174.html 启动redis服务 # redis-ser ...

  7. android 照片旋转并保存

    /** * 读取图片属性:旋转的角度 * @param path 图片绝对路径 * @return degree旋转的角度 */ public int readPictureDegree(String ...

  8. 如果在 Windows 10 家庭版中使用「远程桌面」

    远程桌面是 Windows 系统下原生.跨平台的的远程控制功能,拥有微软官方提供的各平台客户端,就可以让你在远程轻松帮助别人或者控制自己的 PC,而从 Windows 7 以来家庭版都不支持桌面功能

  9. linux 安装软件各种错误集锦及解决方法

    1.最小化安装了centos, 但是使用ifconfig命令时候出现”bash ifconfig command not found” .解决方法:yum -y install net-tools.x ...

  10. Kafka参数详解

    一.相关参数配置 System 系统参数 #唯一标识在集群中的ID,要求是正数. broker.id=0 #服务端口,默认9092 port=9092 #监听地址,不设为所有地址 host.name= ...