X xue_anan Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-16 #1 C#的DLL如何在Delphi中使用!你们是怎么解决这个问题的?
D dingbaosheng Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-16 #2 有点麻烦。这里有一篇文章: http://www.delphibbs.com/keylife/iblog_show.asp?xid=24999
L linuxping Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-19 #3 不能使用! 。Net中的 DLL不 过是托管代码
C cst_zf Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-20 #4 托管代码不能在原生应用程序里边使用,必须修改为非托管代码才行
B barton Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-24 #5 当然可以。 1.如果那个dll注册了COM组件,你可以直接以组件方式调用;如果实在想通过COM方式使用,你可以反编译成IL,然后再加上注册COM属性重新编译一次。 2.如果那个dll没有注册COM组件,你可以在Delphi中调用mscoree.dll中的COM组件构造一个.net clr host。不过这项技术的确有点复杂,要完全弄明白,如果你有比较好的COM基础的话,可以写一个中篇小说的篇幅。
当然可以。 1.如果那个dll注册了COM组件,你可以直接以组件方式调用;如果实在想通过COM方式使用,你可以反编译成IL,然后再加上注册COM属性重新编译一次。 2.如果那个dll没有注册COM组件,你可以在Delphi中调用mscoree.dll中的COM组件构造一个.net clr host。不过这项技术的确有点复杂,要完全弄明白,如果你有比较好的COM基础的话,可以写一个中篇小说的篇幅。
L linuxping Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-24 #6 to barton: 高手就是高手~~ 接触C#不久,希望多多讨论 ~~
D dingbaosheng Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-28 #7 偶在这篇文章中早就说得很明白了,可惜没人看撒:) http://www.delphibbs.com/keylife/iblog_show.asp?xid=24999
L lisongmagic Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-01 #9 把那个dll注册成com方式去调用就行了, 注册的方法是: 进入.NetFrameWork的命令行下运行下面命令 1 cd 到你那个dll的绝对路径下 2 regasm dll的绝对路径+dll文件名 通过上面两步就把c# 写的dll注册成com了 然后通过delphi的 import Library 导入该com,create Unit 成delphi能引用的单元文件 就行了 good luck for you !!
把那个dll注册成com方式去调用就行了, 注册的方法是: 进入.NetFrameWork的命令行下运行下面命令 1 cd 到你那个dll的绝对路径下 2 regasm dll的绝对路径+dll文件名 通过上面两步就把c# 写的dll注册成com了 然后通过delphi的 import Library 导入该com,create Unit 成delphi能引用的单元文件 就行了 good luck for you !!
B barton Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-01 #10 dingbaosheng 和 lisongmagic 所述的方案正是我说的方案1。这两个方案都有一个前提,就是要求所生成的DLL与COM兼容,可以与COM进行互操作。具体讲,Assembly的ComVisible=true。更多的时候如果是别人提供的assembly不一定支持。这时候就需要建立自己的.net clr host了。
dingbaosheng 和 lisongmagic 所述的方案正是我说的方案1。这两个方案都有一个前提,就是要求所生成的DLL与COM兼容,可以与COM进行互操作。具体讲,Assembly的ComVisible=true。更多的时候如果是别人提供的assembly不一定支持。这时候就需要建立自己的.net clr host了。