排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
分类:
Csharp
前言
C#调用C/C++动态链接库的简单案例:用C#实现窗口调用由C/C++编译生成的dll,dll实现两整数求和功能,即函数int Add(int x, int y);
创建DLL
实现步骤:
一:用C/C++编写dll
1、新建VC++应用程序项目,输入名称为MyAdd,在应用程序设置时选择dll应用程序类型,并勾选为空项目类型。
#ifndef DLL_EXPORT #define DECLDIR __declspec(dllimport) #else #define DECLDIR __declspec(dllexport) #endif
建立项目源文件dllmin.cpp
#include <iostream> #define DLL_EXPORT //先定义宏 #include "dll.h"//这个头文件必须在#define DLL_EXPORT后面 extern "C" { DECLDIR int Add( int a, int b ) { return( a + b ); } }
编译调试,生成MyAdd.dll库函数
调用DLL
2、将MyAdd.dll拷贝到新建项目文件下的bin目录中。
3、响应按钮事件,调用MyAdd.dll实现两数相加并在文本框中显示相加后的结果,其实现代码如下:
首先声明调用MyAdd.dll
[DllImport("MyAdd.dll", SetLastError = true)] private static extern int Add(int a, int b);
在按钮相应中添加响应代码:
int x = 7; int y = 9; int z = Add(x, y); textBox1.Text = Convert.ToString(z);
4、调试程序生成可执行文件,实现结果如图
三:总结
1、注意事项
(a)、将生成的dll文件放入DllImport可以寻找到的地方:
1、.exe文件所在目录
2、System32目录
3、环境变量目录。
(b)、在C#窗口调用函数下,首先声明调用Dll文件,如下:
[DllImport("MyAdd.dll", SetLastError = true)] private static extern int Add(int a, int b);
声明中应注意:当参数传递时,尤其是传递和返回字符串时,VC++中主要字符串类型为:LPSTR,LPCSTR, LPCTSTR, string, CString, LPCWSTR, LPWSTR等,但转为C#类型却不完全相同。
原:https://blog.csdn.net/redeagle_gbf/article/details/14001487
评价