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).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…