CSDN博客

img FreeBirdsme

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

发表于2004/6/30 10:44:00  943人阅读

                                 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(...)调用了。

 

 

0 0

相关博文

我的热门文章

img
取 消
img