您的位置:首页 > 编程语言 > C语言/C++

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

2004-06-30 10:44 459 查看
                                 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(...)调用了。
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# c++ class string 语言 .net