调用c++;c#silverlight中的clr dll 我们有一个C++ CLR应用程序,我们编译成了一个DLL。我们通过C++代码中的托管公共REF类公开了几种方法。我们实际上能够让本机c#应用程序加载这个dll,并通过引用传递system::drawing::bitmap。我们所需要做的就是向dll添加一个引用,所有方法都由于隐式pinvoke而公开。 然而,当我们试图在silverlight应用程序中加载dll时,事情就发生了。显然,使用的C++ CLR.NET库与Silverlight不兼容。 我们尝试了很多方法,但就是无法让silverlight调用我们的dll

调用c++;c#silverlight中的clr dll 我们有一个C++ CLR应用程序,我们编译成了一个DLL。我们通过C++代码中的托管公共REF类公开了几种方法。我们实际上能够让本机c#应用程序加载这个dll,并通过引用传递system::drawing::bitmap。我们所需要做的就是向dll添加一个引用,所有方法都由于隐式pinvoke而公开。 然而,当我们试图在silverlight应用程序中加载dll时,事情就发生了。显然,使用的C++ CLR.NET库与Silverlight不兼容。 我们尝试了很多方法,但就是无法让silverlight调用我们的dll,c#,.net,silverlight,interop,clr,C#,.net,Silverlight,Interop,Clr,请问,有人对如何解决这个问题有什么建议吗?任何事情都会被告知 谢谢大家! 我可以想到三个主要选项: 在Silverlight DLL中重写C++/CLR DLL中的逻辑。从Silverlight 5开始,您可以使用 创建一个调用C++/CLR DLL的web服务。Silverlight应用程序可以调用web服务,web服务将能够使用C++/CLR DLL 将C++/CLR DLL作为COM对象公开,在客户端计算机上安装并注册,然后使用t加载C++/CLR DLL 你看到了什么样的错误?我从“事情

请问,有人对如何解决这个问题有什么建议吗?任何事情都会被告知


谢谢大家!

我可以想到三个主要选项:

  • 在Silverlight DLL中重写C++/CLR DLL中的逻辑。从Silverlight 5开始,您可以使用
  • 创建一个调用C++/CLR DLL的web服务。Silverlight应用程序可以调用web服务,web服务将能够使用C++/CLR DLL
  • 将C++/CLR DLL作为COM对象公开,在客户端计算机上安装并注册,然后使用t加载C++/CLR DLL

  • 你看到了什么样的错误?我从“事情爆炸”中推测,它不会默默地失败?Silverlight本身与通常的.NET Assemles不兼容,但服务器端应用程序却兼容。您是否确实需要从客户端引用托管C++程序集,或者我理解不正确?当我们在Silverlight应用程序中添加对DLL的引用时,我们将不会暴露任何方法。在我的团队成员对dll进行了某种汇编级转换以使用silverlight库之后,我们确实看到了公开的函数,但调用其中一个导出函数时出现了某种运行时异常。谢谢!今天我们将尝试,让我们知道它是否工作。我们实际上是通过使用.DEF文件来编译本地函数的C++ + CLR DLL作为本地C++ DLL编译。然而,我们需要更多的测试来看看这是否有效。现在的主要挑战是共享内存(即,我们希望DLL处理SilverLight存储在内存中的图像)。我计划使用Marshal.AllocHGlobal(),它有望与SilverLight一起工作。如果我们能成功,我会发回更多的细节。请让我知道,如果你有任何洞察的记忆传递。它的工作!我们甚至不需要使用allochglobal()。我们实际上能够直接传递Silverlight中的像素缓冲区的地址,C++可以访问这个位置。