dll的制作与调用

来源:互联网 发布:sql loader 522 编辑:程序博客网 时间:2024/05/20 07:31

一 、C#生成dll给C++调用

1.选择C#语言建立类库项目


这是我调用电力系统软件BPA的代码界面(比较简单),如果需要调用其它程序只要好好研究Process类。


这里还有一点需要注意,由于这里没有main方法,程序直接进行process调用(我不确定是不是这个问题?),一定不能忘了在类定义下面加上[STAThread],它是一种线程模型,用在程序的入口方法上(在C#和VB.NET里是Main()方法),来指定当前线程的ApartmentState是STA。用在其他方法上不产生影响。在aspx页面上可以使用AspCompat ="true" 来达到同样的效果。这个属性只在  Com  Interop  有用,如果全部是  managed  code  则无用。简单的说法:[STAThread]指示应用程序的默认线程模型是单线程单元 (STA)。启动线程模型可设置为单线程单元或多线程单元。如果未对其进行设置,则该线程不被初始化。也就是说如果你用的.NET Framework,并且没有使用COMInterop,一般不需要这个Attribute。其它的还有MTA(多线程套间)、FreeThread(自由线程)。 [STAThread] attribute指示应用程序的 COM 线程模型是单线程单元。而于此对应的多线程单元则是[MTAThread] (多线程单元线程)。




2.新建一个C++ 控制台应用项目


3.将dll复制到新建项目的debug中


C++代码如下:


需要注意的是,由于从C#到C++有一个从高到低的感觉,所以在C++项目属性里面有个设置一定要打开,不然会出错,至于这个/CLR的意思,详情可见微软官方解释链接

点击打开链接.


程序编写完毕就可以F5调试啦。这是我的仿真界面:


祝大家学习愉快。


二、C++生成dll给C#调用(这是师兄教的,网上也有很多教程,罗列过来对比学习)

1.选择C++语言建立win32项目,勾选dll,其他都不用选择






2.新建一个C#项目,将dll复制到新建项目的debug中

代码如下


运行结果如下


由于是第一篇日志,内容或许有些空洞,全当学习了。

0 0
原创粉丝点击