最近公司进行产品改造,由于存在部分代码是用delphi写的Com+需要调用C#写的Dll方法,经过网上一些搜索和摸索,调用已经OK。但是至于两者之间的事务问题还需要用到的朋友深入研究。
    现在来说一下调用过程:【本地调试通过,环境是XP,delphi7.0,vs2005】
    首先在vs2005中创建一Class Library项目,添加2个cs文件,代码分别为:
 声明一个接口

 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4namespace beep_Class
 5{
 6    public interface IGO
 7    {
 8        string GO();
 9    }
10}

实现该接口

 1using System.Runtime.InteropServices;
 2namespace beep_Class
 3{   
 4    [ClassInterface(ClassInterfaceType.None)]
 5    public class Class1:IGO
 6    {
 7
 8        public string GO()
 9        {
10            return "aaaaabbbb";
11        }
12    }    
13}

然后在生成类库之前设置一下该项目的属性,如下图所示:

注意红线标示的部分。
然后对此编译成功的DLL【beep_Class.dll】进行处理,打开vs2005自带的命令行工具。输入 tlbexp beep_Class.dll
生成 beep_Class.tlb文件。

元宝注解:
这一步有个更好的方法,即在VS2005中DLL的“项目属性”下“生成事件”添加“生成后事件命令行”:
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\tlbexp" "$(TargetPath)"

下一步是打开delphi7,新建一个Application,在Form上增加一Button。然后选择Project下的,import type library,把刚才生成的Tlb文件【beep_Class.tlb】添加进来,然后点击 CreateUnit就ok了
delphi中的Button事件代码如下:

 1procedure TForm1.Button1Click(Sender: TObject);
 2var
 3  co:Class1;
 4  a:string;
 5begin
 6  co:= CoClass1.Create;
 7  a:=co.GO();
 8  showmessage(a);
 9end;
10end.

编译通过,运行结果如下图:

注意:运行的时候要把Beep_Class.dll放在程序目录中。

转载于:https://www.cnblogs.com/ahjxxy/archive/2009/09/25/1573868.html

【转自元宝兄】关于delphi Com+调用C# DLL的一点说明相关推荐

  1. 在Delphi中调用外部DLL 之External DLL 导入DLL

    调用一个DLL比写一个DLL要容易一些.首先给大家介绍的是静态调用方法,稍后将介绍动态调用方法,并就两种方法做一个比较.同样的,我们先举一个静态调用的例子. unit Unit1;interfaceu ...

  2. delphi 调用Msftedit.dll,重写Richedit,支持RTF画表格

    delphi 2009 调用Msftedit.dll,重写Richedit,能更好地支持RTF,特别是画表格画表格的具体思路分析4个步骤:1 指定类名称 RichEdit50Wvar FMoudlEd ...

  3. 奇淫怪巧之在Delphi中调用不申明函数

    前一阵子,研究了一段时间的Win32Asm,研究到后来发现Win32的ASM实际上还是和C版的介绍的一样.甚至还封装了一个简版的类似VCL库结构框架的32ASM结构库,不过搞着搞着就没兴趣了,也没继续 ...

  4. 如何在Delphi 中调用C#生成的DLL类库

    最近需要写一个和给上位机和下位机通讯的接口,而上位机是用Delphi开发的,所以就需要用C#做一类库给Delphi调用 大概步骤: 1.首先在VS2008中新建一个类项目名为TestDelphi,然后 ...

  5. Delphi 如何调用 OpenCV?

    OpenCV 在 Delphi 中的使用一直是个麻烦的事情. 因为要翻译 C++ 的头文件.工作量那是相当的巨大. 想了一下,既然  OpenCV 支持 Java,那么可不可以通过 JNI 的方式在 ...

  6. Delphi XE调用百度地图

    百度地图在很多应用中会起到画龙点睛的作用,可以非常好的改变人机交互的模式,这里列出delphi xe调用百度地图的方法,通过嵌入HTML语言进行操作,主要操作点如下: 1.定义自己使用的HTML语言, ...

  7. 如何在MFC客户端调用COM DLL

    也许有人会认为这是一个非常小儿科的问题.不过,我还是颇花费了一点时间和精力才搞清楚的.OK, 下面简单谈一下如何去做. 可以有很多方法生成一个COM DLL.比如,VB, VC++, DELPHI等等 ...

  8. C# 调用C++ dll 返回char*调用方式(StringBuilder乱码)

    // CDLLDemo.cpp : 定义 DLL 应用程序的导出函数. // #include "stdafx.h" #include "string.h" # ...

  9. C#调用C++DLL类的方法

    C++的优势在于高效灵活,C#的优势在于简单易用,两者结合起来对项目开发来说是件好事,而且C++不容易反编译,也保障了代码的安全性,如果一些核心算法使用C#编写,那么保密就是一个问题.     C++ ...

最新文章

  1. AMD 再次抨击基准测试工具 SYSMark 偏袒英特尔
  2. Django值应用和分布式路由
  3. java之Map和Collection
  4. 公司用的非标普通自动化用单片机还是plc_PLC的介绍
  5. 群晖docker安装cms_Nas码农篇:群晖Docker安装Gitlab
  6. android 时间控件使用,android 时间控件的使用
  7. MATLAB学习笔记(十七)
  8. cx是什么简称_80年的5角,在纸币收藏界简称为8005
  9. 机器学习中常用的优化方法
  10. 送给那些有代码基础但仍旧不会学自动化测试的朋友们
  11. 微信打飞机游戏(python)
  12. VMware Explore 2022 China,赋能中国企业加速实现云智能
  13. 蓝牙连接测试系统软件,蓝牙测试软件官方版
  14. 在腾讯云部署一个自己的网站 问题总结
  15. Invalid format specifier的解决方法
  16. 去除停用词并绘制词云图
  17. 黄金分割法python实现
  18. Invalid bound statement (not found): com.itheima.mapper.userMapper.SelectAll
  19. 最牛逼 Java 日志框架 — Log4j2,性能无敌,横扫对手.....
  20. pageoffice在Edge浏览器、谷歌浏览器42及以上版本和火狐浏览器52及以上版本兼容处理

热门文章

  1. poj 1306 Combinations
  2. Dz0724补丁补掉的一个xss+补掉的另外一个xss
  3. java jvm 参数 -Xms -Xmx -Xmn -Xss 调优总结
  4. Putty自动登陆远程Linux主机
  5. acwing yxc总结时间算法复杂度
  6. linux用户态驱动--IOMMU(三)
  7. log4cxx体系结构
  8. Apache Hook机制解析(中)——细节讨论
  9. MySQL Workbench 怎么创建数据库
  10. CCNP-2 EIGRP试验2(BSCI)