Windows Azure not finding DLL of C++/CLI project

筅森魡賤 提交于 2019-11-28 11:45:11

The problem was that the Visual C++ 2010 Runtime libraries were missing from the cloud side.

What I did was add the Visual C++ 2010 Redistributable package to the project, along with a script to silently install it at start up, and now the native dll's work. You also need this if you're using native C dll's.

Steps:

1) Download Visual C++ 2010 Redistributable Package, and add it to your project.

2) Create a new batch file and add this to it:
vcredist_x64.exe /q /norestart
exit /b 0

3) Open the ServiceDefinition.csdef file and add this under the relevant WebRole element:

<Startup>
  <Task commandLine="InstallVCRedist.bat" executionContext="elevated" taskType="simple" />  
</Startup>  

UPDATE:
Visual C++ 2012 is out and the same script works, though everyone should make sure Azure is running atleast Windows Server 2008 R2, otherwise the start-up task will hang and the role will never start (until you kill the vcredist process in the task manager via RDP).

IF you want to verify about what is on Azure VM, just try to unzip your CSPKG file and then again unzip .CSSX file (just rename CSSX to zip) and match that every references is all there. This way you can match what is on VM. Once you verify what DLL is missing in VS, select the Reference DLL and set its property "Copy Local" as "True".

You need to place all dlls in the folder which is exist on live server. If you add refrence from your local and that location is not exist on live than you cannot build code on live. So make sure that all the dlls are exist on the live before deploy code on live.

Make sure the C++ dll and the unmanaged C library (if it's a .dll and not just source) are both included in your service package, and make sure the compiler's dumping the C++ library in the right place. This article has a decent walkthrough.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!