CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  语言基础/算法/系统设计

delphi7.0调用C#编写的dll文件! 大侠们帮忙看一下!

楼主wangzh2006()2006-09-14 20:36:28 在 Delphi / 语言基础/算法/系统设计 提问

我用C#编写了一个计算两个整型数的求和程序,之后编译成DLL文件,用DELPHI进行调用  
  但是出现以下的警告!  
   
  应用程序正常初始化(0xc000007b)失败。请单击"确定",终止应用程序。  
   
  我的C#程序是:  
                    public   class   Add  
  {  
  public   int   add(int   i,   int   j)    
  {    
  return(i+j);    
  }  
  }  
     
  DELPHI程序为:  
  var  
      Form1:   TForm1;  
        function   add(a   :longint;b   :longint):longint;cdecl;external   'add.dll';  
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      a   :longint;  
      b   :longint;  
      c   :longint;  
  begin  
      a   :=strtoint(e1.Text);  
      b   :=strtoint(e2.Text);  
      c:=add(a,b);  
      e3.Text   :=inttostr(c);  
  end;  
   
  end.  
  由于C#   中int型的范围是-2,147,483,648   到   2,147,483,647  
  所以在delphi里应用了长整型变量longint  
  生成dll文件后在C:\Program   Files\Borland\Delphi7\Lib\Debug文件下引入此文件,但还是出现  
  “应用程序正常初始化(0xc000007b)失败。请单击"确定",终止应用程序。”的情况  
   
  问题点数:20、回复次数:13Top

1 楼keiy()回复于 2006-09-14 20:44:17 得分 2

http://community.csdn.net/Expert/topic/4879/4879484.xml?temp=.5786249  
  Top

2 楼cjkxuejf(sandy)回复于 2006-09-18 17:00:33 得分 5

delphi7.0   不能这样调用的啊!!c#的dll文件   和以前的dll文件的生成方式是不一样的.c#的dll文件可以简单的说成就是个域名单元文件.   这样就不符合delphi7.0调用dll文件的类型Top

3 楼wangzh2006()回复于 2006-09-19 21:05:42 得分 0

那么要进行调用应该如何处理呢?Top

4 楼agui(阿贵: 高级图形用户界面)回复于 2006-09-21 23:27:43 得分 5

C#编译的DLL是.NET的Assembly,不是WIN32的DLL,因此D7编译的程序(以及所有的WIN32程序)不能调用它(至少不能直接调用),只能是.NET程序调用。你可以用C/C++编那个DLL,或者用Delphi来编。  
   
  (另外,从C#的角度来看   add   是类Add的非静态函数,即使用.NET程序来调用Add.add也需要先new一个Add对象才能调用add。)  
  Top

5 楼DelphiGuy()回复于 2006-09-21 23:33:37 得分 5

.NET   Assembly也是可以直接被Win32   APP调用的,只要生成unmanaged   exports就可以了。  
  目前.net的开发工具中,只有MC++和Delphi能够生成这种引出。  
   
  Top

6 楼surefire()回复于 2006-09-26 07:52:35 得分 0

是不是机器没有安装.Net   Frame?Top

7 楼hdt(倦怠)回复于 2006-09-26 08:01:34 得分 3

给C#做个com封装  
  具体参考  
  ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconexposingnetframeworkcomponentstocom.htmTop

8 楼wangzh2006()回复于 2006-09-28 17:46:01 得分 0

我所做的项目的一部分要求使用c#进行,但是需要与其他部分用delphi编的进行调用。  
  Top

9 楼wangzh2006()回复于 2006-09-28 17:47:35 得分 0

现在我用的语言是visualc#2005Top

10 楼DelphiGuy()回复于 2006-09-28 17:56:46 得分 0

必须从Win32程序中调用吗?  
  那你就要用Delphi.net或者MC++把这个DLL重新封装一下,生成unmanaged   exports才行。  
  Top

11 楼agui(阿贵: 高级图形用户界面)回复于 2006-09-28 19:14:33 得分 0

你研究一下搜索的结果吧:  
  "calling   .net"   "from   Win32"  
  http://www.google.com/search?num=50&hl=en&lr=lang_zh-CN%7Clang_zh-TW%7Clang_en&newwindow=1&safe=off&q=%22calling+.net%22+%22from+Win32%22&btnG=Search&lr=lang_zh-CN%7Clang_zh-TW%7Clang_en  
   
  "Inverse   P/Invoke"  
  http://www.google.com/search?hl=zh-CN&q=%22Inverse+P%2FInvoke%22&btnG=Google+%E6%90%9C%E7%B4%A2&lr=lang_zh-CN%7Clang_zh-TW%7Clang_en  
  Top

12 楼wangzh2006()回复于 2006-10-02 10:33:55 得分 0

多谢   各位大侠了!  
  小弟研究一下上述方法!  
  多谢多谢!Top

13 楼wangzh2006()回复于 2006-10-08 16:20:02 得分 0

我改变了dll的属性ComVisible为true,但是还不能进行调用。  
  请问,如果通过com组件进行调用应该如何进行?  
  小弟先谢了Top

相关问题

关键词

得分解答快速导航

  • 帖主:wangzh2006
  • keiy
  • cjkxuejf
  • agui
  • DelphiGuy
  • hdt

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo