c#中调用c++ dll的例子

本文详细介绍了如何在C#中调用C++编译的DLL,包括DLL的创建过程,C++函数定义,C#中使用DllImport调用DLL函数,以及结构体的传递方法。示例包含初始化计数、金额计算和用户信息操作等功能。
摘要由CSDN通过智能技术生成

首先来看看c++中dll工程的创建过程

我用的是vs2012,首先创建一个win32项目,在应用程序向导的应用程序类型中选者dll,假定我的项目名称为win32dll,那么向导会自动生成一个win32dll.cpp的文件,我们只要在其中加要输出的函数就可以了。

以下我写的几个函数

===================================================

// Win32Dll.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"

static int g_init = 0;
void __stdcall Init ( )
{
    g_init++ ;
}

 

int __stdcall GetInitCount ( )
{
    return g_init ;
}

int __stdcall GetChange( int pay, int cost )
{
    return ( pay-cost) ;
}

 

//dll结构调用

typedef struct
{
    char name[32];
    char passwd[32];
}USER_INFO_S;

static USER_INFO_S *g_user = NULL ;

//dll中结构作为输入变量
void __stdcall SetUser( USER_INFO_S * user )
{
    if ( g_user != NULL )
delete g_user ;


    g_user = new USER_INFO_S ;
    memcpy( (char *)g_user, (char *)user, sizeof(USER_INFO_S) );

}

 //dll中结构作为输出变量

bool __stdcall GetUser( USER_INFO_S *user )
{
    if ( g_user != NULL )
    {
        memcpy( (char *)user, (char *)g_user, sizeof(USER_INFO_S) );
        return true ;
    }else
        return false ;
}

 ================================================

 

定义模块文件

仅仅这样系统编译后输出的函数名,wpf还是不能认识,还得加上一个模块定义文件

在工程中添加新建项,代码中的模块定义文件,取名叫win32dll.def

我想输出上面代码中的所有文件给wpf用,那么win32dll.def中的代码如下

================================================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值