C#调用C++的程序

本文介绍了在C#项目中如何调用C++编译的DLL以实现跨语言功能。首先,创建一个包含C# WinForm项目和C++ DLL项目的解决方案。在C++项目中,设置配置类型为DLL并启用CLR支持。接着,通过在C++中使用特定修饰符导出方法,并在C#中利用DllImport特性引用DLL。这样,C#就能成功调用C++的函数了。
摘要由CSDN通过智能技术生成
        这两天公司给了一个新项目,要为USB以太网服务器(BT-3000GB)写一个切换程序,其实它本身是带了一个虚拟软件,但是不能满足公司的需求,所以要重新自己开发一款。于是参照着源码来进行开发,无奈源码是c++开发的,对我来说,有些晦涩难懂,于是乎,想出来一个方式,就是用c#补充为满足的要求,其他的功能还是保留c++的,在c#中调用c++的动态dll,开发中面临着很多问题,接下来会与大家分享。
1.在一个解决方案中创建两个项目,一个winform项目(这个和平常创建一样),一个c++项目(这个要注意,如下图)


这里要选择dll



建完如下所示:



2.c++项目生成dll需要注意的地方:
项目属性的设置,配置类型为dll,公共语言运行时支持选择/clr(公共语言运行时支持),否则在winform项目中无法使用。



3.c++中要调用的方法,c#如何引用
对于c++生成的dll的使用,我们需要对方法进行修饰,例如我要在c#中调用OnClickDevice方法,下面是c++和c#中各自的配置:
c++中首先声EXPORT_DLL,然后用来修饰方法,这样才能保证方法在其他程序中能被调用,具体原因参考博客:http://blog.csdn.net/xfz0330/article/details/51348548
   
   
   
#define EXPORT_DLL extern "C" __declspec(dllexport)
EXPORT_DLL DWORD OnClickDevice(int idex)
{
SXUSBDEVICE sxdev[MAX_DEVICE];
DWORD i=0, j, dwReaded, dwReturned, dwIp;
TCHAR szBuf[4096], szIp[64],szPortName[256];
 
 
ZeroMemory(gsxdev<
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值