C#的DLL注册为COM,Delphi来调用

非常实用的东西!过去知道这个方法的话可以解决多少问题啊

首先建立一个C#的DLL工程,写一个类

//Test.cs
namespace Test
...{
public class MyTest
...{
public string Fun()
...{
return this.ToString();
}
}
}

,编译

然后在cmd里执行VS的vsvars32.bat设置环境变量,然后执行

regasm cscomtest.dll /tlb:cscomtest.tlb /codebase

Microsoft (R) .NET Framework 程序集注册实用工具1.1.4322.573
版权所有 (C) Microsoft Corporation 1998-2002。保留所有权利。

RegAsm 警告: 使用 /codebase 注册未签名的程序集可能会导致程序集妨碍在同一台计算机
上可能安装的其他应用程序。/codebase 开关旨在仅用于已签名的程序集。请为您的程序集
提供一个强名称并重新注册它。
成功注册了类型
程序集已被导出到“C:\Documents and Settings\pyw\My Documents\Visual Studio Proje
cts\cscomtest\bin\Debug\cscomtest.tlb”,类型库注册成功

然后打开VB或者VBS,写KO!成功了,这个效果相当于用VB调用C#,虽然是通过COM实现的,太酷了!

set o = createobject("Test.MyTest")
msgbox o.Fun()

http://blog.csdn.net/yanjiaye520/article/details/6777819

时间: 2024-08-08 13:59:19

C#的DLL注册为COM,Delphi来调用的相关文章

Delphi编写DLL(以及静态和动态方式调用)

Delphi编写DLL(以及静态和动态方式调用) 作者/cadenza7 什么是DLL? DLL是Dynamic Link Library(动态链接库)的缩写形式.DLL 是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件,动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数,函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译.链接并与使用它们的进程分开存储的函数.DLL 还有助于共享数据和资源,多个应用程序可同时访问内存中单个DLL 副本的内容

将.NET dll注册到GAC(Global Assembly Cache)中

当发现有多个解决方案引用一个dll时,为了不重复引用所以将.net的一个dll注册到GAC中去. gacutil.exe. 记得使用管理员权限打开 开始菜单-Microsoft Visual Studio 2015 -VS2015 开发人员命令提示,在控制台中输入 gacutil.exe 回车,既可以看到一些参数. 输入:gacutil.exe -i dll路径 原文出自:http://www.cnblogs.com/PurpleCow/archive/2012/02/07/2341960.ht

C++ DLL注册

今天项目中需要用C++实现对几个DLL文件的注册,查了许多资料,总结如下: 1 #include <SHLWAPI.H> 2 #pragma region DLL 注册与反注册 add by whl 3 #pragma comment(lib, "Shlwapi.lib") 4 bool RegistryDll(CString& szDllPath) 5 { 6 if (!(PathFileExists(szDllPath) && (!PathIsD

dll注册加载失败解决方法

当输入命令regsvr32 A.dll注册时,跳出下面错误提示: 模块C:\windows\System32\A.dll加载失败. 请确保该二进制存储在指定的路径中,或者调试它检查该二进制或相关的 .DLL文件是否有问题 查了很多资料,总而言之是64位系统的system32与syswow64的混淆原因,解决方法就是到syswow64目录下使用regsvr32 命令.但我根据这种解决方法,还是不能解决问题. 这里感谢老师提醒,在次与大家分享. B.dll的生成引用了A.dll,在注册B.dll时出

dll注册到GAC还是bin - 跪求大神指点 - sharepoint程序

通常来说程序在使用dll的时候,会先去GAC中查找是否有存在合适的dll,然后才会到应用程序下的bin目录去查找: 前几天遇到了一个奇葩问题,web项目工程添加了一个第三方dll的引用,然后把这个第三方的dll注册到了GAC里面,但是web程序在运行时,报错程序集未引用:然后就在bin目录下也copy了一份dll,然后程序就OK了:但是这个情况推翻了上面的逻辑,于是进行了多次测试修改,终于发现,如果在前台页面(aspx页面)中调用了第三方dll中的方法(<%%>的方式调用),则此第三方dll就

如何在Delphi中调用VC6.0开发的COM

上次写了如何在VC6.0下对Delphi写的COM进行调用,原本想马上写如何在Delphi中调用VC6.0开发的COM时,由于在写事例程序中碰到了个很怪的问题,在我机子上用VC写的接口程序编译能通过.但是调用就会出现问题,(在VC下调用也是一样的出现).但是用Delphi写的接口程序编译后,不管是在VC下还是在Delphi下调用都没有问题.后来我把VC开发的接口程序编译后,拷贝到其它机子上试,怪事,完全没有问题了.总结后才知道是我机子有点问题.我到现在还没有解决为什么在我的机子上不行,在其它机子

使用DLL进行不同语言之间的调用(转)

源:使用DLL进行不同语言之间的调用 __declspec(dllexport) 是告诉编译器用来导出函数的,在代码中不另作说明了. extern "C" 的意思就是用C的方式来导出函数.为什么要用C的方式来导出呢.因为C++中有重载,编译器会对函数名进行更改,修饰成唯一的函数名.__stdcall 告诉编译器函数调用方式.这点可以参考其他文章,我预计也会在blog中写上一篇关于函数调用方式. extern "C" __declspec(dllexport) int

delphi xe6 调用java原生GPS的方法

如果用xe6自带的LocationSensor控件,默认优先使用网络位置,为了直接使用GPS位置,在网上搜到了以下代码,经实测证实是可用的. uses Androidapi.JNI.Location, Androidapi.JNIBridge, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os,FMX.Helpers.Android,Androidapi.JNI.GraphicsContentViewText; type TLocationListener

DLL注册

注册DLL,一般可以用regsvr32 xxx.dll 但是COM组件,用这个注册不了. 可以用下面的方式进行注册: C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /codebase HW_Translattion.dll 同时,如果同时需要对tlb文件注册,也可以 C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /codebase HW_Translattion