c#利用SWIG调用c++dll学习总结

本文介绍了如何在Windows环境下,利用SWIG连接C#和C++,创建DLL,并进行调用。内容包括SWIG的简介、安装步骤、C++项目的DLL生成过程、C#项目的调用方法,以及在过程中需要注意的关键点和解决的难点,例如IntPtr参数转换。文章还提供了相关参考链接以便深入学习。
摘要由CSDN通过智能技术生成

开发环境:

操作系统:windows 7
IDE:Microsoft Visual Studio Professional 2015
SWIG: 3.0.12

swig的介绍

详细介绍可看官网,一下贴出官网上的原话:

SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages. SWIG is used with different types of target languages including common scripting languages such as Javascript, Perl, PHP, Python, Tcl and Ruby. The list of supported languages also includes non-scripting languages such as C#, Common Lisp (CLISP, Allegro CL, CFFI, UFFI), D, Go language, Java including Android, Lua, Modula-3, OCAML, Octave, Scilab and R. Also several interpreted and compiled Scheme implementations (Guile, MzScheme/Racket, Chicken) are supported. SWIG is most commonly used to create high-level interpreted or compiled programming environments, user interfaces, and as a tool for testing and prototyping C/C++ software. SWIG is typically used to parse C/C++ interfaces and generate the ‘glue code’ required for the above target languages to call into the C/C++ code. SWIG can also export its parse tree in the form of XML and Lisp s-expressions. SWIG is free software and the code that SWIG generates is compatible with both commercial and non-commercial projects.

以下是我的理解(注:以下这段话并不是上段话的翻译):
Swig主要是为了将c++/c中的代码所实现的功能移植到别的语言上。一般我们要将c++/c移植到别的语言上,基本操作是将c++中的实现代码转变成dll,然后再供别的语言调用,这样安全性高,且易于调用。但是因为各种语言不相同,如果不借助swig,自己去封装。在调用dll时就会有很多类型(包括基本类型,结构体和类)转换需要注意,比如c#调c++ dll,可能得自己造一个相对应与c++的结构体和类才能成功调用。但是如果我们用了swig,这些我们都不用考虑,我们只需要考虑swig给我们的接口类型是什么,然后我们只要按照swig给的接口类型传入参数,就OK了。说白了就是swig代替了我们利用c#去重新定义dll中所需要传入的参数类型(如结构体或类)这个工作。

swig实现步骤

swig的安装:

进入如下网址:http://www.swig.org/download.html
由于我是windows系统,所以安装如下版本:
这里写图片描述
下载后,将其解压至制定目录,如:D:\SDK\swigwin-3.0.12

1、建立如下c++项目(应用程序类型选择dll类型)和c#项目,还没实现代码,都是空项目。主要有.h .cpp .idl .cs文件(具体这四个文件怎么创建我就不赘述了,想必能找到这篇博文就说明已具备了创建此文件的能力)。
这里写图片描述

2、填写代码:
(1) c++_file.idl:
(网上说的都是.i文件࿰

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值