日期:2014-05-18  浏览次数:21002 次

c#编写动态链接库
用c#能不能创建动态链接库DLL供外部程序调用呢?
如果能,怎么做.举个小例.

是不是实现后外部程序对其的调用就像是在使用系统API一样.
如果不是,如何调用.

或者问题可以总结为:如何创建自己的API以供其他任何语言调用.

------解决方案--------------------
创建项目时,选择类库就可以生成DLL了
你把DLL当成自己的API就行了
------解决方案--------------------
至于调用,将它添加到引用,然后using XXX; 就可以调用了
------解决方案--------------------
至于调用,将它添加到引用,然后using XXX; 就可以调用了
------解决方案--------------------
添加类库生成dll文件也可添加使用Activex控件
在其他项目引用DLL。using 命名空间
看看petshop
------解决方案--------------------
将它添加到引用,然后using XXX; 就可以调用了

这里只是指出在C#这样来用!

在别的程序当然就是其它语言的用法!

只是用法问题!!
------解决方案--------------------
把Dll编译成共享程序集, 使用时引用就行了。
------解决方案--------------------
C#只能编写托管的DLL,调用时不能像系统API那样调用。
------解决方案--------------------
探讨
引用:
将它添加到引用,然后using XXX; 就可以调用了

这里只是指出在C#这样来用!

在别的程序当然就是其它语言的用法!

只是用法问题!!


那你说说,比如是c吧,怎么调用c#写出了的dll呢.

------解决方案--------------------
添加类库生成dll
------解决方案--------------------
做成com、activex、webservice

做成com调用
http://forums.devshed.com/delphi-programming-90/c-dll-need-to-be-used-in-delphi-231122.html

You were definitely closer with your second attempt as you can't load a .NET assembly as if it was a normal C-style DLL. If you're getting "Class not registered" error messages in Delphi it simply means the required registry entries were not available.

To use your C# class as a COM object, the best thing to do is put all your methods in one or more interfaces then make the class implement each of those interfaces. 
Example:
C# code
// IAddInterface.cs
public interface IAddInterface
{
    int Add(int i1, int i2);
}

------解决方案--------------------
编译问题。把C#文件编译成本地的二进制代码。应该就可以调用了。
网上搜索一下C#二进制编译器看看吧。我是菜鸟,提个建议。
------解决方案--------------------
如果要考虑用其它语言如VB、VC、DEPHI调用,不要用C#等.NET环境语言开发动态类库。

运行环境高,执行效率低,托管的优点也没了。
------解决方案--------------------
要给其他语言调用,最好是使用COM

C#的机制与COM是不同的模式,C#是写不了真正的COM的,

虽然可以把C#的DLL模拟成一个COM使用,但较麻烦,最好使用其他语言开发
------解决方案--------------------
c#的DLL 更像COM 而不是像C的API 
强命名DLL 就可以像System.dll一样,但如果在其他计算机上运行,需要复制本地=true