C#中 对标准C++动态库的调用

原创 2004年06月30日 10:44:00

                                 C#的标准动态库的调用

                                                                                                2004-06-30

微软的.net的开发规范里,公共语言规范是个重要的概念,它允许我们多种语言之间互用动态库,因此给我们提供了很大的灵活性,我们可以调用win32 的api ,或我们自己的动态库,实现功能的扩展。

在C#的语言规范中给出了符合公共规范的类型,比如在C++中的指针 对应 C#中的IntPtr, LPCTSTR   对应string 等,在msdn中用cls可以查阅,在此就不多说了。

在c++的动态库编写时,我们必须注意函数的输出方式,一般的用__declspec(dllexport) 输出时会函数会显示出长名称,不利于我们调用。 可以用 extern "C" 形式去输出函数名,或在.def文件中指定输出。

具体可以用dumpbin 命令查看。例如:

C++中的声名:

extern "C"

__declspec(dllexport)

   int StartUp( LPCTSTR sLocalIp,
            int LocalPort,
            LPCTSTR sGWIp,
            int GWPost)

C#中的声名:

namespace someApp

{

  public class class1

   {

      public class1() {};

     [DllImport("DFSAPCP.dll", CharSet=CharSet.Auto)]
     public static extern int StartUp( string sLocalIp, 
               int LocalPort,
               string sGWIp, 
              int GWPost);

      }

}

 

这样可以在C#的程序中通过class1.StartUp(...)调用了。

 

 

在VS2015中用C++创建动态库并用C#调用

在VS2015中用C++创建动态库并用C#调用
  • songyi160
  • songyi160
  • 2016年02月25日 23:39
  • 6996

Tag c++调用c#动态库

有些时候,为了使用别人已经写好的C#库文件,我们需要使用C++调用C#库文件; 以下做了一简单的调用工程,步骤如下: 1、准备C#库 (dll文件) 第一步:单击"文件"---->"新建项目"--...
  • lileiyuyanqin
  • lileiyuyanqin
  • 2016年11月19日 14:34
  • 309

C++调用C#写的动态库

使用C++调用C#的DLLSwfDotNet是C#编写的,作者的C#水平,真是令我佩服。这是个特别好的读写Swf文件的库。但是,我要用在C++项目中,怎么让C++调用C#的DLL呢。今天一上午都在琢磨...
  • aktsoso
  • aktsoso
  • 2010年08月04日 19:44
  • 2691

使用了非托管的第三方库的c++动态库在c#中的调用

         在c#中使用c++动态库,一般情况下有两种有两种方法,第一种是使用c++\CLI,这种方法比较直观,但是需要花费时间学习c++\CLI,比较简单的方法是PInvoke,但是这种...
  • jiangdianqin
  • jiangdianqin
  • 2015年06月17日 10:04
  • 1123

C#加载C、C++动态库的方法

1、针对托管动态库的调用 本文章中的外部调用函数声明如下: public delegate int PutValue(string name, string value); Assembly as...
  • youyongyoumou
  • youyongyoumou
  • 2016年07月12日 10:55
  • 2182

C#调用C/C++动态链接库(.dll)详解

第一篇编译C的动态连接库 在实际工作中,我们经常会将C语言中的.lib和.h文件(静态库)编译成动态连接库.dll文件(这里只提供这两种文件,没有完整的工程),以提供给其他语言平台调用。 ...
  • tery001
  • tery001
  • 2014年06月04日 15:21
  • 1659

C#调用C/C++动态链接库

C#调用C/C++动态链接库示例
  • u012156133
  • u012156133
  • 2013年11月01日 15:18
  • 3643

关于使用C#调用C++生成的动态链接库(DLL文件)

使用C++的打开一张图片,C++的程序。在C++新建项目的应用设置里面选择DLL,图片如下        将显示单张图片的C++代码复制到建立文件的.CPP文件下面,然后调试。  ...
  • huan_chen
  • huan_chen
  • 2016年09月12日 21:00
  • 1045

C#调用C/C++ 动态链接库DLL(三)

2。 在C#中创建DLL接口的声明 C#没有全局函数,必须使用静态函数实现全局函数。 1)  DllImport类似C++中的__declspec(dllimport),第一个参数为必选参数,为D...
  • Nocky
  • Nocky
  • 2012年06月24日 15:24
  • 16424

C#接收C++动态库返回字符串char*,在C#端如何接收并得到正确的字符串

最近调用动态库传数据,发现C#接收C++动态库返回字符串char*,在C#端设置对应类型为string无法接收到正确值,最后想到在C#端先用字节数组接收返回的字符串,然后再将字节数组转换为对应的字符串...
  • qq_22889875
  • qq_22889875
  • 2017年11月29日 21:32
  • 137
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#中 对标准C++动态库的调用
举报原因:
原因补充:

(最多只允许输入30个字)