举例说明如何在C#中使用C/C++写的DLL

news/2024/7/4 1:40:31 标签: c#, winform, dll, mfc, extension, class
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views">

举例说明如何在C#中使用C/C++写的DLL

class="postbody" style="font-family:Arial; font-size:14px; line-height:25px">

如何在C#中使用C/C++写的DLL。举一个我做过的例子说明:
建立VC工程DllDemo,建立的时候选择MFC AppWizard(class="tags" href="/tags/DLL.html" title=dll>dll),选择Regular Dll using shared MFC Dll或者MFC Extension Dll。
现在可以写一个函数代码,在DllDemo.cpp文件中添加这些代码。也可以使用新的文件添加代码;
extern “C“ __declspec(class="tags" href="/tags/DLL.html" title=dll>dllexport) int Add(int a,int b)
{
     AFX_MANAGE_STATE(AfxGetStaticModuleState());
     TRACE("Entering DllAdd\n");

     return a+b;
}

编译工程。

下面建立一个C#的WinForm程序测试DllDemo:
启动vs.net IDE,建立新的C#工程,选择WinForm应用程序。
在Form1.cs中添加引用:using System.Runtime.InteropServices;
在pulic class Form1声明的开头添加代码:
[DllImport("MotorControlDll.class="tags" href="/tags/DLL.html" title=dll>dll",EntryPoint="Add",ExactSpelling=false,CallingConvention=CallingConvention.Cdecl)]
public static extern int Add(int a,int b);

至于DllImport属性的用法可以察看MSDN,对于各项参数有详细的说明。

最后还要记得将DllDemo生成的位于Debug文件中DllDemo.class="tags" href="/tags/DLL.html" title=dll>dll文件加入到C#的WinForm程序的bin目录下。
这样就可以直接使用Add(int a,int b)函数。


http://www.niftyadmin.cn/n/791001.html

相关文章

结构体转化成字符数组

昨天晚上在解决通过socket发送结构体的问题的时候&#xff0c;知道了可以将结构体先转化成字符串的形式再发送&#xff0c;但今天之前一直有个疑问没有解决&#xff08;为了方便描述&#xff0c;去掉socket部分&#xff09;&#xff0c;首先看下代码&#xff1a; #include <…

美团多渠道打包 总结

一.为什么用? Android 7.0&#xff08;Nougat&#xff09;引入一项新的应用签名方案APK Signature Scheme v2&#xff0c;它是一个对全文件进行签名的方案&#xff0c;能提供更快的应用安装时间、对未授权APK文件的更改提供更多保护&#xff0c;在默认情况下&#xff0c;Andro…

四、IP地址转换

IP地址与端口 TCP/IP&#xff08;传输控制协议/网际协议&#xff09;不是一个协议&#xff0c;而是一组协议的总称&#xff0c;包括IP、TCP、UDP、ICMP、ARP等。它规范了网络上的所有通信设备&#xff0c;尤其是一个主机与另一个主机之间的数据交换格式以及传送方式。 IP地址&a…

定时修改本机ip的脚本

因为测试需要&#xff0c;要写一个定时修改本机ip的程序&#xff0c;听说用shell编写比较简单明了&#xff0c;所以用shell写了&#xff08;本人第一次用shell编程&#xff09;。 #!/bin/bash while truedoip_last$((($RANDOM%255)1))echo now ip is: 192.168.1.$ip_lastifconf…

c++DLL 学习之路

DLL的优点 简单的说&#xff0c;dll有以下几个优点&#xff1a; 1) 节省内存。同一个软件模块&#xff0c;若是以源代码的形式重用&#xff0c;则会被编译到不同的可执行程序中&#xff0c;同时运行这些exe时这些模块的二进制码会被重复加载到内存中。如果使用dll&#xf…

How to create UrlSlug in Asp.Net MVC

转自&#xff1a;http://www.ehsanghanbari.com/Post/20/how-to-create-urlslug-in-aspnet-mvc UrlSlug Is a way of generating a valid Url, and using the title of an article to generate a URL. UrlSlug is very important in CEO because google likes to index the mea…

Pycharm永久激活

如果想让pycharm永久被激活&#xff0c;比如截止日到2099-01-01;这应该算是永久激活了吧&#xff1b;哈哈哈 http:// step1: 下载jar包&#xff1a; 此jar包的目的就是让截获截止时间并骗过pycharm; https://pan.baidu.com/s/1kZDDb3vz4x3vQmyde7NGbg 密码: ibcistep2: 下载完…

Dash与Bash的语法区别

转自&#xff1a;BabyUnion的博客 如今Debian和Ubuntu中&#xff0c;/bin/sh默认已经指向dash&#xff0c;这是一个不同于bash的shell&#xff0c;它主要是为了执行脚本而出现&#xff0c;而不是交互&#xff0c;它速度更快&#xff0c;但功能相比bash要少很多&#xff0c;语法…