DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: mmp369
今日帖子: 1
在线用户: 13
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 ken0137 (顺眼即佛) ▲▲▲▲▲ -
普通会员
2019/6/11 10:32:10
标题:
Delphi 如何调用C#写的DLL 浏览:478
加入我的收藏
楼主: 看过一些文章,说是C#写的DLL必须设置“使程序集COM可见”这样的方式,才能被调用,然后又说使用regasm先注册这个DLL,后有两种方式调用,
第一种是仿照调用Excel的方式,
var 
    aClass: Variant;
begin
  aClass:= CreateOleObject('TestDll.TestClass');
  aClass.YourProcedure ('参数');
end;
这种方法,我测试过时成功的,但是看不到接口
第二种是根据生成tlb文件,在project菜单选择import type library——>Add 这个tlb文件,会生成unit TestDelphi_TLB,
这种方式能在TestDelphi_TLB看到接口,但是我生成了,却看不到任何接口方法,
请教是否是C#写的DLL需要特殊设置或者我在生成的时候步骤是有问题的?
----------------------------------------------
只会简单使用,并未精通深入
作者:
男 chinaz (有缘人) ▲▲▲▲▲ -
神秘会员
2019/6/11 10:45:40
1楼: 你如果用于商业,建议用DotNetRuntimeLibrary4Delphi,这个不用com也可以,很好用,他会生成一个delphi的接口文件,直接调用即可。
----------------------------------------------
一路风雨走过,因为有你们
作者:
男 ken0137 (顺眼即佛) ▲▲▲▲▲ -
普通会员
2019/6/11 10:51:55
2楼: 谢谢 chinaz,我就自个儿用,不知道哪里能求得和谐版?
----------------------------------------------
只会简单使用,并未精通深入
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲▲ -
普通会员
2019/6/11 11:40:32
3楼: 干吗不用 COM ?
----------------------------------------------
(C)(P)Flying Wang
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲▲ -
普通会员
2019/6/11 11:40:48
4楼: COM 多好,微软的新 API 全是 COM。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 crystalmoon (黑夜杀手) ★☆☆☆☆ -
盒子活跃会员
2019/6/11 12:15:45
5楼: DotNetRuntimeLibrary4Delphi,CrossTalk,RemObjects Hydra.....
----------------------------------------------
-
作者:
男 ken0137 (顺眼即佛) ▲▲▲▲▲ -
普通会员
2019/6/12 0:38:31
6楼: @crystalmoon,谢谢,
我需要的是Delphi调用C#写的DLl
DotNetRuntimeLibrary4Delphi完全找不到,这个应该是我需要的
RemObjects Hydra.找到个5的版本,但是不知道如何使用,
CrossTalk也是找不到

所以DotNetRuntimeLibrary4Delphi在哪里才能找得到啊
----------------------------------------------
只会简单使用,并未精通深入
作者:
男 chinaz (有缘人) ▲▲▲▲▲ -
神秘会员
2019/6/12 5:47:22
7楼: 花钱,才几百一千多块,支持正版,不要光想这盗版,这样会害了你的。
----------------------------------------------
一路风雨走过,因为有你们
作者:
男 ken0137 (顺眼即佛) ▲▲▲▲▲ -
普通会员
2019/6/12 8:47:17
8楼: 非商业用途,就自己用用,
----------------------------------------------
只会简单使用,并未精通深入
作者:
男 wangyunyong (新秀) ★☆☆☆☆ -
盒子活跃会员
2019/6/12 9:34:55
9楼: https://sourceforge.net/projects/dotnetruntimelibraryfordelphi/
----------------------------------------------
-
作者:
男 toupiao (wwww) ▲▲▲▲△ -
注册会员
2019/6/12 9:51:03
10楼: https://sourceforge.net/projects/dotnetruntimelibraryfordelphi/
这个有试用期
----------------------------------------------
-
作者:
男 hzw008 (新心晨曦) ★☆☆☆☆ -
盒子活跃会员
2019/6/12 10:48:55
11楼: https://www.crystalnet-tech.com/?tdsourcetag=s_pcqq_aiomsg
----------------------------------------------
-
作者:
男 wk_knife (wk_knife) ★☆☆☆☆ -
盒子活跃会员
2019/6/12 11:37:52
12楼: C#的DLL是自己写的么? 如果不是自己写的就只能用上述的办法试试了。如果是自己写的。就是缺接口定义。


1.在实现类的前面加[ClassInterface(ClassInterfaceType.AutoDispatch)]
2.定义一个你要发布的方法的接口,在实现类中引用接口,接口上要定义接口自己的GUID和[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
然后每个方法前加[DispId(X)],X是一个数字。不同方法的X不能一样。



这样才能被Delphi 导入类型库时,看见方法。 方法在接口下面,根据Co类名那个类返回接口,就可以调用方法了。
----------------------------------------------
-
作者:
男 ken0137 (顺眼即佛) ▲▲▲▲▲ -
普通会员
2019/6/12 15:38:19
13楼: C#的DLL是别人写的,要推动的估计比较难,所以才想着是否可以用插件的方式,就是找不到那个DotNetRuntimeLibrary4Delphi
----------------------------------------------
只会简单使用,并未精通深入
作者:
女 sinagirl (雪亮) ★☆☆☆☆ -
盒子活跃会员
2019/6/12 16:02:58
14楼: 用jvcl可以调用
----------------------------------------------
健康快乐每一天
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行31.25毫秒 RSS