DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: liugggggxxxxx
今日帖子: 34
在线用户: 14
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 ken0137 (顺眼即佛) ▲▲▲▲▲ -
普通会员
2019/6/11 10:32:10
标题:
Delphi 如何调用C#写的DLL 浏览:928
加入我的收藏
楼主: 看过一些文章,说是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可以调用
----------------------------------------------
健康快乐每一天
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2019/9/4 20:34:02
15楼: 我之前用的这个方法:
 http://www.csframework.com/archive/2/arc-2-20110408-1307.htm

关键就是要生成一个注册表文件;

到不同电脑上,都要把这个注册表导入一下才能用;
有点类似于以前注册 ocx;

不过调用倒是挺简单的,直接 用varint类型,
任意写名字调用(就是注册表里的函数名)

我在想,如果能够动态字符串调用就好了,这样可以做成配置的了;
----------------------------------------------
青云论坛
作者:
男 letianwuji (乐天无极) ▲▲▲△△ -
注册会员
2019/9/5 10:23:44
16楼: https://blog.csdn.net/cgh_chen/article/details/6367748
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
作者:
男 letianwuji (乐天无极) ▲▲▲△△ -
注册会员
2019/9/5 10:27:46
17楼: 示例代码:
https://github.com/acj1971/DelphiDotNETInteropJVCLExamples
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2019/9/7 9:34:37
18楼: to letianwuji (乐天无极):
  多谢提供,可能 最新的jvcl,在delphi10.3里,我还没搞定;
我在找找高版本的;
----------------------------------------------
青云论坛
作者:
男 letianwuji (乐天无极) ▲▲▲△△ -
注册会员
2019/9/7 10:59:14
19楼: 自己修改修改,我安装的是10.2...没安装10.3.
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
作者:
男 zyp1984 (小李他妈的飞刀) ★☆☆☆☆ -
普通会员
2019/9/7 21:31:14
20楼: 微软的玩意儿的确很方便。有源码直接按com进行编译,随便用。。。
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行39.0625毫秒 RSS