2010-03-24 60 views
2

我目前正在研究开始一个新项目。这个项目将分为2个部分,一个轻客户端(可能是控制台)和一个使用silverlight的重客户端。轻客户端必须是跨平台的。Silverlight可以与C++静态库链接吗?

但是,他们都将使用相同的核心(顺便说一句,核心将需要使用套接字)。

我想使用C++来构建轻量级客户端,但考虑到这两个应用程序的核心是共同的,如果它可以是相同的代码,将会非常感激。

所以问题很简单:Silverlight可以编译为C++静态库吗?如果可能的话,那么跨平台问题(月光)呢?

如果这是不可能的。跨平台时,我可以使用哪种语言与silverlight一起工作?由于性能,汇编语言会更好!

感谢您的专业知识:)

+1

它是一个奇怪的混合一个轻量级的跨平台控制台应用程序和一个Silverlight应用程序,你能解释一点吗?正如你从答案中已经看到的那样,SL中的C++是不可行的。 – AnthonyWJones 2010-03-25 08:15:38

回答

3

不仅只Silverlight的托管代码,它使用标准的CRL,但被称为CoreCLR特殊CRL。 Silverlight程序集是real .Net程序集,但是针对核心.Net库的有限子集进行编译。在CoreCLR中运行时(在浏览器中)出于安全原因,Silverlight程序集有几种限制方式。你甚至不能使用C++编写Silverlight程序集,也不能将Silverlight代码标记为不安全(我承认可能存在一种解决此限制的方法)。

这个答案只适用于Silverlight 2 & 3,虽然我没有很多Silverlight 4的使用经验,但我不知道任何能够让您使用SL4跨浏览器的功能。

我认为如果您指望Moonlight for Linux兼容性,您会感到失望。我的团队选择了Silverlight,因为它运行在Firefox,IE,并且很快在Chrome上运行,Opera在Windows上非正式运行,在Mac上运行Firefox和Safari。

编辑:注意这篇文章的作者日期,这是pre-SL4。

+0

这是不正确的> = SL 4.你可以P/Invoke提升特权OOB应用程序。 – xanadont 2013-04-18 15:29:54

+0

我也不完全正确。 SL 5为您提供了对提升特权应用程序的P/Invoke访问(它不需要安装OOB)。 – xanadont 2013-04-18 15:59:59

2

号Silverlight是只托管代码。

但是,Silverlight 4将支持COM互操作,当使用提升的权限运行浏览器时。这不适用于其他平台 - 这是仅限于Windows的功能。贾斯汀安吉尔在他的blog post regarding the (not quite) cross-platform of Silverlight中提到过这个。

+0

有办法“强制”同居托管C#而不是托管C++!但感谢博客文章,我会研究它:) – 2010-03-24 23:59:37