none
怎样把我的C++源代码在C#中被调用!? RRS feed

答案

  • 你好!
         如果你过去的代码是实现为标准的COM组件,那比较容易交互,可以通过直接添加引用的方式自动生成包交互程序集,然后就可以使用里面的类和方法了。
         如果过去编写的都不是COM组件,那可能要麻烦一些了,只能通过在C++ 的dll通过extern关键字暴露方法,然后再C#中通过DllImport特性声明dll,然后来声明这个方法,交互十分不便利,而且很可能由于传递参数的类型不符,造成很多问题!
    周雪峰
    2010年3月11日 11:12
    版主

全部回复

  • C# 和 C++ 根本思想都不一样,要调用 C++ 代码也只能借助 P/Invoke 或者 COM Interop。

    建议还是把以前的代码好好保存,再用 C# 重新实现一遍。
    Mark Zhou
    2010年3月11日 9:59
  • 你好!
         如果你过去的代码是实现为标准的COM组件,那比较容易交互,可以通过直接添加引用的方式自动生成包交互程序集,然后就可以使用里面的类和方法了。
         如果过去编写的都不是COM组件,那可能要麻烦一些了,只能通过在C++ 的dll通过extern关键字暴露方法,然后再C#中通过DllImport特性声明dll,然后来声明这个方法,交互十分不便利,而且很可能由于传递参数的类型不符,造成很多问题!
    周雪峰
    2010年3月11日 11:12
    版主
  • 我的做法是,原来的dll不动,利用com再写一个dll,调用原来的dll的方法,然后这个com再给c#来调用,相对好一点,不过有些dll也比较难办,特别是有状态的dll,而c#里的dll就是程序集,没有状态,比较难处理。
    霸王
    2010年3月11日 13:20
  • 我用C++开发了10年软件了,现在想学C#,怎样保护我以前的心血!?

    <@((((><
    用 Managed C++ 在.NET 上开发你的程序。
    2010年3月12日 7:19
  • 得到高手的指点,不胜荣幸!


    <@((((><
    2011年6月1日 7:47
  • 我的做法是,原来的dll不动,利用com再写一个dll,调用原来的dll的方法,然后这个com再给c#来调用,相对好一点,不过有些dll也比较难办,特别是有状态的dll,而c#里的dll就是程序集,没有状态,比较难处理。
    霸王

    此法可以一试!
    <@((((><
    2011年6月1日 7:49
  • 那就是放弃C#的学习!?
    <@((((><
    2011年6月1日 7:51