azure网站支持p / invoke加载本机c ++ dll

问题描述 投票:7回答:2

我发现this说azure web / worker角色可以加载原生c ++ dll。 azure网站也支持这个吗?

我的站点是一个mvc站点,它调用本地c ++ dll,它从本地驱动器读取文件并进行一些计算。我更喜欢azure网站的原因是因为它从免费开始。

谢谢。

c++ asp.net-mvc azure pinvoke
2个回答
7
投票

Azure网站还可以加载本机dll。我让它成功了。

以下是步骤(来自here):

  1. 编译您的解决方案。
  2. 右键单击托管项目,然后选择“添加/现有项”。不要使用“添加参考”。
  3. 导航到已编译的本机DLL并选择它(根据需要调整文件类型)。
  4. 单击“添加”拆分按钮中的向下箭头,然后选择“添加为链接”。
  5. 右键单击新添加的文件,然后选择“属性”。
  6. 确保“构建操作”为“内容”,“复制到输出目录”设置为“始终复制”或“如果更新则复制”。

注意:在步骤2中,您应该右键单击该项目,以便将dll复制到bin文件夹,并上载到Azure服务器。如果你将它放在某个文件夹中而不是直接放在项目下,那么dll将被复制到/ bin / somefolder,它仍然是不可见的。

希望这可以帮助。


3
投票

您可以加载本机DLL,但有一些要求。首先,它必须是x64,而不是x86。

此外,您必须针对正确的工具集构建它:

默认情况下,Windows Azure工作者和Web角色上仅安装Visual C ++ 2008的Visual C ++运行时库。因此,针对Visual C ++ 2010或Visual C ++ 2005的Visual C ++运行时库编译的本机代码将无法加载到工作线程和Web角色实例中。如果您在同一台计算机上安装了Visual Studio 2008和Visual Studio 2010,则可以使用Visual Studio 2010的本机多目标功能,使用Visual Studio 2008平台工具集(编译器,链接器,标头,和图书馆)。有关使用Visual Studio 2010使用Visual Studio 2008平台工具集构建应用程序的详细信息,请参阅C ++ Native Multi-Targeting(http://go.microsoft.com/fwlink/p/?LinkId=231170)。

或者,您可以设置一个运行提升的启动任务,该任务将您的本机DLL的要求复制到服务器上。

© www.soinside.com 2019 - 2024. All rights reserved.