我发现this说azure web / worker角色可以加载原生c ++ dll。 azure网站是否也支持此功能?
我的网站是一个mvc网站,它调用本地c ++ dll,它从本地驱动器读取文件并进行一些计算。我更喜欢azure网站的原因是因为它从免费开始。
感谢。
答案 0 :(得分:7)
Azure网站也可以加载本机dll。我刚刚开始工作。
以下是步骤(引自here):
编译您的解决方案。
右键单击托管项目,然后选择“添加/现有项目”。请勿使用“添加参考”。
导航到已编译的本机DLL并选择它(根据需要调整文件类型)。
点击“添加”拆分按钮中的向下箭头,然后选择“添加为链接”。
右键单击新添加的文件,然后选择“属性”。
确保“Build Action”为“Content”,“Copy To Output Directory”设置为“Copy always”或“Copy if newer”。
注意:在步骤2中,您应该右键单击该项目,以便将dll复制到bin文件夹,并上传到Azure服务器。如果你将它放在某个文件夹中而不是直接放在项目下,那么dll将被复制到/ bin / somefolder,它仍然是不可见的。
希望这有帮助。
答案 1 :(得分: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 ++本机多目标定位(http://go.microsoft.com/fwlink/p/?LinkId=231170)。
或者,您可以设置一个运行提升的启动任务,该任务将您的本机DLL的要求复制到服务器上。