none
C#写的Dll能编译成非托管代码吗?(主要是想在BCB中调用) RRS feed

  • 问题

  • 小弟我头痛好久了,因为本来这不应该是个问题。

    我习惯用C#或Java写程序(现在正在鼓捣.NET 4.0)。但我老爹一直以来都用Borland C++ Builder 。最近他老人家想让我帮忙写几个函数封装到dll让他调用,但我实在是很反感冗长又不智能的C……所以就想用C#给他写。

    问题现在就冒出来了:在网上搜来搜去,似乎用C#写的dll最后是CLR托管代码。而找了半天,非托管代码调用托管代码的网上讲解大部分都集中在微软自己的VS各语言之间,调用的库、一些什么“帽子^而非星星*”这样的言论,在BCB中能使吗?这是C++标准还是MS的啊?

    如果直接在BCB中用没问题……请有经验的前辈给个肯定答复。要不然有没有办法索性把C#写的东西直接编译成非托管的?(因为没用到什么高深的反射之类的,只是简单一些循环和多线程)。

    有其他解决方案吗?(但肯定是BCB调用C#编译的dll的解决方案了)

     

    PS:有说注册COM,然后云云。说实话我实在懒得去再学个borland C++了,而我爹似乎对com不是很熟悉的样子……so………………

     

    纠结。。。。但还是希望能碰见指点人生大道的仙人级人物出现。


    myQQ: 1850018
    2010年5月1日 5:15

答案

  • 你好!

         使用Ngen.exe这个工具,这个工具可以把托管的Dll直接编译成传统的本机代码

         如果你安装的是VS2008,这个工具在:

    C:\Windows\Microsoft.NET\Framework\v2.0.50727

         是命令行的工具,你可以通过VS命令提示工具来使用!

         但是即使你把Dll直接编译成传统的本机代码,也无法和BCB交互,我建议你通过COM接口来暴露程序集,然后BCB通过COM接口来和你的Dll交互,具体可以参考:

         http://msdn.microsoft.com/zh-cn/library/zsfww439%28VS.80%29.aspx

         希望对你有帮助!


    周雪峰
    2010年5月1日 11:19
    版主

全部回复

  • 你好!

         使用Ngen.exe这个工具,这个工具可以把托管的Dll直接编译成传统的本机代码

         如果你安装的是VS2008,这个工具在:

    C:\Windows\Microsoft.NET\Framework\v2.0.50727

         是命令行的工具,你可以通过VS命令提示工具来使用!

         但是即使你把Dll直接编译成传统的本机代码,也无法和BCB交互,我建议你通过COM接口来暴露程序集,然后BCB通过COM接口来和你的Dll交互,具体可以参考:

         http://msdn.microsoft.com/zh-cn/library/zsfww439%28VS.80%29.aspx

         希望对你有帮助!


    周雪峰
    2010年5月1日 11:19
    版主
  • ngen.exe,发现一个好东西,不知道性能是否可以达到native的水平,先mark一下。
    霸王
    2010年5月1日 15:00