`

swig--在java、C#中调用c++写的DLL(以vs2012配置为例)

 
阅读更多
1、下载、安装:
http://www.swig.org/download.html下载swigwin-2.0.8 版本,注意是windows版本!!。



完了解压即可,其中有swig.exe
Examples文件夹下有许多示例~


2、C++端:
新建一个DLL工程,写一个示例代码如下:



3、在VS2012的外部工具中配置swig:
具体配置方法与Astyle等外部工具配置方法类似:
http://cherishlc.iteye.com/admin/blogs/1489826


4、用swig生成C++端的导出函数用的文件及C#端所需文件:
写一个swig用的module文件(.i后缀)如下:
其中第一次出现的.h文件(c语言风格,以#开头)为要包含在生成的.cxx文件中的头文件;
之后,以%开头的头文件则是为了定义所要导出的函数


然后在该文件为当前编辑的文件时运行刚才配置的swig工具,生成如下文件:


5、将swig生成的文件加入到工程:
C++端:加入*.cxx文件到工程中



C#端类似,加入的为*.cs文件而已。

6、生成DLL,测试
编译C++端的工程,生成DLL(注意生成的DLL名要与modle文件中的module名一致,手动改生成的文件名或直接配置均可)
工程文件中配置如下:
C++端:
要配置两处,必须得一致,可恶的VS2012的规定啊,参见:
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/beb1c32f-3893-4061-81a7-4aed4032a367/



C#端:
注意和c++生成的DLL在一个文件夹中,或者自己拷贝到同一文件夹中~




一切搞定,编译工程,可以运行了


工程代码见附件
  • 大小: 13.5 KB
  • 大小: 36.2 KB
  • 大小: 18.6 KB
  • 大小: 3.7 KB
  • 大小: 26.8 KB
  • 大小: 38 KB
  • 大小: 21.9 KB
  • 大小: 18.9 KB
  • 大小: 40.4 KB
分享到:
评论

相关推荐

    C#利用SWIG调用C++的DLL

    本文将深入探讨如何使用SWIG(Simplified Wrapper and Interface Generator)这一工具来实现在C#中调用C++编写的DLL动态链接库。 首先,SWIG是一个自动接口生成器,它的主要功能是生成接口代码,使得不同的编程语言...

    使用Swig转换C++库到C#示例代码

    Swig(Simplified Wrapper and Interface Generator)是一种工具,它能够自动将C++库转换为其他编程语言,如C#,从而让这些语言可以调用C++的函数和类。在这个"使用Swig转换C++库到C#示例代码"的压缩包中,我们有三...

    CSharp-calls-JAVA-program.rar_C#调用java的dll_c# 调用 java sdk_c#调用ja

    综上所述,C#调用Java程序涉及多个步骤,包括DLL的生成、引用添加、包装类的编写、环境变量的设置以及实际的调用过程。虽然这个过程可能较为复杂,但通过这种方式,可以充分利用不同语言的优势,构建出灵活且功能...

    Java调用C# DLL的方法简介

    在C# DLL中,为需要Java调用的函数添加`[DllImport]`注解,指定DLL的路径和函数签名。 3. **C语言中间层** 创建一个C语言的动态库,这个库将作为Java和C#之间的桥梁。C函数需要按照JNI规范编写,包括本地方法签名...

    c#调用c++,c++转换工具

    标题中的“C#调用C++,C++转换工具”指的是一个工具,它的主要功能是帮助C#开发者能够无缝地调用C++编写的代码。这种调用通常涉及到跨语言互操作性,也称为P/Invoke(Platform Invoke)或托管-非托管代码交互。 ...

    c++swigcsharp.rar

    解压后,你可以查看具体实现细节,了解如何配置SWIG接口文件,以及如何在C#项目中正确引用和使用生成的DLL。 通过这样的方式,开发者可以在保持C++代码性能优势的同时,利用C#的高级特性,如垃圾回收、面向对象编程...

    将声网提供的C++SDK转换为C#接口

    3. **P/Invoke调用**:在C#中,我们可以使用Platform Invoke (P/Invoke)机制来调用C++/CLI接口。这需要在C#中声明对应的DllImport属性,指定DLL的名称和导出函数。 4. **错误处理**:C++通常使用异常处理,而C#则...

    PHP调用C/C++生成的.so库的详细笔记

    在Linux系统中,.so文件是共享对象(Shared Objects),相当于Windows平台下的.DLL动态链接库。它们包含了可执行代码和数据,可供多个程序同时使用,减少了内存占用。 要将C/C++代码集成到PHP中,我们需要经历以下...

    swig使用手册

    SWIG在Windows上的使用同样涵盖了多个脚本语言的示例,如C#、Java、Perl、Python等,每种语言都有具体的编译和测试指令,帮助开发者快速上手。 #### 五、脚本语言与C/C++的交互机制 SWIG在实现脚本语言与C/C++的...

    64位GDAL2.2.3C#编译版本

    在这个案例中,SWIG被用来将GDAL的C++ API转换为C#可以使用的类库。 - 结果生成的C#类库使C#开发者可以直接在他们的.NET应用中调用GDAL的功能,如打开栅格和矢量数据集,执行投影转换,读写地理元数据等,无需关心...

    gdal可用64位DLL.zip

    SWIG是一个工具,它可以将C或C++接口自动转换为多种编程语言的接口,如Python、Java、C#等。这里的`ogr_wrap.dll`和`gdal_wrap.dll`就是SWIG生成的C#接口库,使得C#开发者可以直接调用GDAL和OGR的功能。 3. C#接口...

    FFmpegDemo_c#ffmpeg_C#_ffmpeg_

    2. 如果需要在.NET中使用,需要将编译好的库转换为C#可调用的格式,这可能涉及到使用C++/CLI或者Swig等工具。 "FFmpegDemo"项目中,你可能会看到以下几个关键部分: 1. `FFmpegDllImport`:这是定义FFmpeg库函数的P...

    GDAL 1.1.11.0 编译好的库支持C#和C++

    而对于C#开发者,GDAL通常通过SWIG(Simplified Wrapper and Interface Generator)工具生成.NET接口,使得C#程序可以调用GDAL的底层C++代码。这使得.NET平台上的应用程序也能充分利用GDAL的功能,例如在Windows ...

    pjsip-csharp:建立pjsip并从C#使用

    二、转换为DLL可用 1. 安装 2. 打开pjsip-apps\src\swig目录,并且创建csharp文件夹,然后进去执行 swig -I../../../../pjlib/include -I../../../../pjlib-util/include -I../../../../pjmedia/include -I../../../....

    gdal17_cs_lib(最新)

    3. `gdal_wrap.dll`:这是一个自动产生的C#接口库,通常由SWIG(Simplified Wrapper and Interface Generator)工具自动生成,用于封装C++库为C#可用的接口。它桥接了C#代码和C++ GDAL库,使得C#应用能够调用GDAL的...

    GDAL的安装、库函数介绍、应用实例、注意事项

    2. **引用GDAL库**:在C#项目中添加对`gdal15.dll`文件的引用。 3. **编写C#代码**:使用GDAL提供的API进行地理空间数据的操作。 4. **运行测试**:确保一切设置正确无误后,运行C#项目进行测试。 ### 五、注意事项...

    GDAL、Prj.4和GEOS库的编译与引用[收集].pdf

    通过以上步骤,开发者可以在Windows环境下成功编译这两个库,并将其集成到自己的C/C++或C#项目中。此外,还简要提到了GEOS库的相关信息,供有需要的读者参考。这些知识对于从事地理信息系统开发的工程师来说非常重要...

Global site tag (gtag.js) - Google Analytics