none
使用C++编写的Metro风格App,如何调用C# 生成的DLL? RRS feed

  • 问题

  • 如果C#生成的DLL是winRT的,应该在C++中如何调用?

    如果C#生成的DLL是.Net的,应该在C++中如何调用?

    2012年6月7日 7:50

答案

  • Metro中只有第一种情况存在。WinRT且输出为 WinMD File:

    然后在C++ Metro项目中,项目属性-> Common Properties -> Add New Reference...  选择Solution > Projects, 勾选你的C#开发的WinRT库即可。然后在C++源代码中

    using namespace WindowsRuntimeComponent1;  //引用你的C# WinRT的名字空间

    则就可以创建你的C# WinRT的类型实例了:

     Class1^ cls = ref new Class1();


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us


    2012年6月8日 6:10
    版主
  • Metro能调用WinRT的库,以及微软列出的.Net / Win32 for Metro 的API, 所以你的网上拿到的公开库如果非WinRT类型的,则你是无法在Metro下使用的 (一些特殊for Metro而编译的Native 的动/静态链接库除外)。

    Microsoft 提供的Facebook C# SDK 并不支持Metro 应用开发,只是普通.Net类型库,所以没有WinMD选项,不可在Metro中使用。请到这里下载最新的支持Metro的Facebook C# SDK:http://csharpsdk.org/

    源码: https://github.com/facebook-csharp-sdk/facebook-csharp-sdk/ 其中Facebook-WinRT.sln 则为Metro WinRT类型。

    例子:https://github.com/facebook-csharp-sdk/facebook-metro-sample


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Zhuoyu 2012年6月12日 1:01
    2012年6月11日 4:06
    版主

全部回复

  • Metro中只有第一种情况存在。WinRT且输出为 WinMD File:

    然后在C++ Metro项目中,项目属性-> Common Properties -> Add New Reference...  选择Solution > Projects, 勾选你的C#开发的WinRT库即可。然后在C++源代码中

    using namespace WindowsRuntimeComponent1;  //引用你的C# WinRT的名字空间

    则就可以创建你的C# WinRT的类型实例了:

     Class1^ cls = ref new Class1();


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us


    2012年6月8日 6:10
    版主
  • 多谢 Bao! 这种情况我倒是知道的。我的困难在于C# 编成的dll并非由我生成,而是网上的公开库,比如Microsoft 提供的Facebook C# sdk. 这个库虽然提供了源码,而且可以选择是编WinRT的还是.Net4.5的,但是都只支持生产dll,不能生成WinMD文件。

    更有些工程是没有源代码,只有一个dll,这种情况下是否就不再可用?

    2012年6月8日 7:19
  • Metro能调用WinRT的库,以及微软列出的.Net / Win32 for Metro 的API, 所以你的网上拿到的公开库如果非WinRT类型的,则你是无法在Metro下使用的 (一些特殊for Metro而编译的Native 的动/静态链接库除外)。

    Microsoft 提供的Facebook C# SDK 并不支持Metro 应用开发,只是普通.Net类型库,所以没有WinMD选项,不可在Metro中使用。请到这里下载最新的支持Metro的Facebook C# SDK:http://csharpsdk.org/

    源码: https://github.com/facebook-csharp-sdk/facebook-csharp-sdk/ 其中Facebook-WinRT.sln 则为Metro WinRT类型。

    例子:https://github.com/facebook-csharp-sdk/facebook-metro-sample


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Zhuoyu 2012年6月12日 1:01
    2012年6月11日 4:06
    版主