C#与C++混合编程

简介: C#与C++混合编程

C# Winform调用win32 C++动态链接库,假设当前有VC++编译器生成的动态库文件testdll.h,testdll.lib和testdll.dll。使用前必须把相应的C++动态库拷贝到工程.exe输出的目录下。


一、.h头文件如下:


#ifdef TESTDLL_EXPORTS

#define TESTDLL_API __declspec(dllexport)

#else

#define TESTDLL_API __declspec(dllimport)

#endif

// 此类是从 testdll.dll 导出的

class TESTDLL_API Ctestdll {

public:

Ctestdll(void);

public:

int Add(int a, int b) {return a+b;}

int Sub(int a, int b) {return a-b;}

int Mul(int a, int b) {return a*b;}

};

extern TESTDLL_API int ntestdll;

TESTDLL_API int fntestdll(void);


二、C#源码如下:


using System;

using System.Runtime.InteropServices;//System.Runtime.InteropServices一般用其DllImport调用windows的DLL函数(Windows API)或调用自用C++写的DLL函数


namespace WindowsFormsApplication2

{

   class Ctestdll

   {

       [DllImport("testdll.dll", EntryPoint = "?Add@Ctestdll@@QAEHHH@Z", CharSet = CharSet.Auto)]//"EntryPoint"的值请使用微软工具DEPENDS.EXE查看。

       private static extern int Add(int a, int b);

       public int myAdd(int a, int b)

       {

           return Add(a, b);

       }


       [DllImport("testdll.dll", EntryPoint = "?Sub@Ctestdll@@QAEHHH@Z", CharSet = CharSet.Auto)]

       private static extern int Sub(int a, int b);

       public int mySub(int a, int b)

       {

           return Sub(a, b);

       }


       [DllImport("testdll.dll", EntryPoint = "?Mul@Ctestdll@@QAEHHH@Z", CharSet = CharSet.Auto)]

       private static extern int Mul(int a, int b);

       public int myMul(int a, int b)

       {

           return Mul(a, b);

       }


       [DllImport("pci9030dll.dll", EntryPoint = "?PMC400_Initial@@YAHXZ", CharSet = CharSet.Auto)]

       private static extern int PMC400_Initial();

       public int myPMC400_Initial()

       {

           return PMC400_Initial();

       }

   }

}



相关文章
|
1月前
|
数据处理 C# C++
如何使用C#和C++结构体实现Socket通信
如何使用C#和C++结构体实现Socket通信
|
6月前
|
C# 开发工具 C++
简单C#类转非托管C++
简单C#类转非托管C++
|
6月前
|
C# C++
[闻缺陷则喜]C#调用C++的类
[闻缺陷则喜]C#调用C++的类
|
1月前
|
Java API C++
【C++ 与Qt 线程】C++ std::thread 与Qt qthread多线程混合编程
【C++ 与Qt 线程】C++ std::thread 与Qt qthread多线程混合编程
45 1
|
1月前
|
开发框架 Java .NET
C#编程语言的优势与C++对比
C#编程语言的优势与C++对比
|
6月前
|
C# C++
C#做界面果然比C++方便
C#做界面果然比C++方便
|
8月前
|
人工智能 Java C#
C# C++ Java Python 选择哪个好?
编程语言何其多, 如何选中自己合适的那一个呢?
C# C++ Java Python 选择哪个好?
|
8月前
|
C# 开发工具 C++
Baumer堡盟工业GigE网口相机出现相机已经连续成功,但是无法采集图像问题二(C#和C++))
Baumer堡盟工业GigE网口相机出现相机已经连续成功,但是无法采集图像问题二(C#和C++))
82 0
|
9月前
|
搜索推荐 Java C#
转:冒泡排序算法C#、C++和JAVA代码的区别
冒泡排序算法的C#、C++和Java代码的基本结构是相同的,但是由于语言本身的差异,在细节上可能会有所不同。例如,C++代码可能使用指针来操作数组,而C#和Java代码则可能使用索引来访问数组。在语法上,C#和Java代码可能更相似,而C++可能更像C语言。
67 1
转:冒泡排序算法C#、C++和JAVA代码的区别
|
11月前
|
开发框架 Rust .NET
TechEmpower 21 轮 Web 框架性能评测 -- C# 的性能和 Rust、C++ 并驾齐驱
版权声明:本文为 CSDN 博主「shanyou」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/shanyou/article/details/126081288
1384 1