7

我发现说 azure web/worker 角色可以加载本机 c++ dll。天蓝色的网站也支持这个吗?

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

谢谢。

4

2 回答 2

7

Azure 网站还可以加载本机 dll。我只是让它工作。

以下是步骤(从此处引用):

  1. 编译您的解决方案。

  2. 右键单击托管项目并选择“添加/现有项目”。不要使用“添加参考”。

  3. 导航到您编译的本机 DLL 并选择它(根据需要调整文件类型)。

  4. 单击“添加”拆分按钮中的向下箭头,然后选择“添加为链接”。

  5. 右键单击该新添加的文件,然后选择“属性”。

  6. 确保“构建操作”为“内容”并且“复制到输出目录”设置为“始终复制”或“如果更新则复制”。

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

希望这可以帮助。

于 2013-11-16T00:22:55.047 回答
3

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

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

默认情况下,只有 Visual C++ 2008 的 Visual C++ 运行时库安装在 Windows Azure 辅助角色和 Web 角色上。因此,针对 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++ 本机多目标 ( http://go.microsoft.com/fwlink/p/?LinkId=231170 )。

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

于 2013-10-11T16:42:50.920 回答