.net DLL 注册 regasm delphi调用
.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调用的更多相关文章
- CommMonitor8.0 串口过滤驱动 SDK DLL版本 C#/Delphi调用DEMO
CommMonitor8.0 SDK DLL 版本,此版本是直接调用DLL. Delphi调用定义: constCommMOnitor8x = ‘CommMOnitor8x.dll’; typeTOn ...
- Delphi 调用C# DLL(包含委托)
例子 C# Dll: using System; using System.Collections.Generic; using System.Text; using System.Diagnosti ...
- Delphi调用C# 编写dll动态库
Delphi调用C# 编写dll动态库 编写C#dll的方法都一样,首先在vs2005中创建一个“类库”项目WZPayDll, using System.Runtime.InteropServices ...
- Delphi 调用C# 编写的DLL方法
近来,因工作需要,必须解决Delphi写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行: 编写C#dll的方法都一样,首先在vs2005中创建一个“ ...
- Delphi XE3写DLL,用Delphi7调用,报错!
http://bbs.csdn.net/topics/390870532 用delphi xe3写的DLL,delphi7调用,参数都是PAnsiChar,DLL里的函数接收delphi7传的入参,没 ...
- 发现个delphi调用vc写的Dll中包括pchar參数报错奇怪现象
发现个delphi调用vc写的Dll中包括pchar參数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会执行报错,在之前随意加上条语句就不报错了奇怪! vc的DLL源代码地址 ...
- Delphi 调用C/C++的Dll(stdcall关键字, 会导致函数名分裂. 此时函数名变成_stdadd@8)
delphi调用C++写的Dll, 当然这个Dll要求是非MFC的Dll, 这样子才能被delphi调用. 根据C++定义函数的情况, Delphi有不同的相对应的处理方法.1. 声明中不加__std ...
- Delphi - Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件
项目背景 应欧美客户需求,需要将文件压缩成.tar.gz格式的文件,并上传给客户端SFTP服务器. 你懂的,7-Zip软件的显著特点是文件越大压缩比越高,在Linux系统上相当于我们Windows系统 ...
- 【转】Delphi调用webservice总结
原文:http://www.cnblogs.com/zhangzhifeng/archive/2013/08/15/3259084.html Delphi调用C#写的webservice 用delph ...
随机推荐
- 2.Linux技能要求
Linux嵌入式工程师技能要求: 1.C语言 具备C语言基础.理解C语言基础编程及高级编程,包括:数据类型.数组.指针.结构体.链表.文件操作.队列.栈. ...
- js中获取事件对象的方法小结
原文地址:http://jingyan.baidu.com/article/d8072ac4594d6cec95cefdac.html 事件对象 的获取很简单,很久前我们就知道IE中事件对象是作为全局 ...
- Epic Games工程师分享:如何在移动平台上做UE4的UI优化?
转自:https://blog.csdn.net/debugconsole/article/details/79281290 随着技术的不断升级,高性能的引擎逐渐受到越来越多研发商的青睐,UE4就是其 ...
- CRM4.0 上传附件大小限制
问题背景: 上传附件大小默认为 5M 可以通过以下设置修改其大小 : "设置"--〉“管理”--〉“系统设置”--〉“电子邮件”--〉“设置附件文件的大小限制”
- 第7章 网络层协议(3)_ARP协议
3. ARP协议 3.1 ARP(Address Resolution Protocol)协议的工作过程和安全隐患 (1)计算机A和C通信之前,先检查ARP缓存中是否有计算机C的IP地址对应的MAC地 ...
- AndroidStudio查看无用的资源文件;
1.打开需要查看的项目,选择AS上方标题栏的Analyze选项: 2.选择 Run Inspection by Name 3.在弹出框内输入 unused resources 4.筛选你需要查看的资源 ...
- Solr中的日期/时间表示
摘要: Solr的日期字段(TrieDateField 和DateRangeField)可以对一个时间点以毫秒精度表示. 格式 Solr中的日期有很严格的格式限制: YYYY-MM-DDThh:mm: ...
- bat文件去括号
@Echo Off&SetLocal ENABLEDELAYEDEXPANSION FOR %%a in (*) do ( set "name=%%a" set " ...
- java根据GPS(经纬度)获取地理位置
package cn.antiy.weiqing.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONAr ...
- Docker使用札记 - 常用命令
1. 删除untagged的镜像(TAG列为<none>) docker images -f "dangling=true" -q|xargs docker rmi