2012-03-19 12 views
16

Stavo cercando di utilizzare omnicompletion di Vim con il mio codice Python, ma ogni volta che provo C-x + C-o, viene richiesto il seguente messaggio di errore:Errore di runtime con Vim Omnicompletion

Runtime Error!

Programma E: \ Vim \ vim73 \ gvim.exe

R6034 Un'applicazione ha fatto un tentativo di caricare la libreria di runtime C in modo non corretto. Per ulteriori informazioni, contattare il team di supporto dell'applicazione.

Qualcuno potrebbe dirmi come risolvere questo problema! Molte molte grazie!

risposta

22

Ho lo stesso problema che causa gvim non è in grado di caricare python pyd dll. Ci sono alcuni suggerimenti per risolvere la DLL di .pyd che causa il problema di cui sopra. Non sono sicuro c'è un modo per risolvere l'errore di runtime per tutte le DLL. Refere al link Not embed the correct manifest for the msvc runtimes on windows su come risolvere il problema.

Aggiornamento: Invece di aggiornare manifest per il file .pyd. Ho provato ad aggiornare manifest per gvim direttamente aggiornando il manifest gvim originale con alcune modifiche dal manifest python.exe.

# dump manifest from gvim.exe 
>> mt.exe -inputresource:gvim.exe;#1 -out:gvim.manifest 

# dump manifest from python.exe 
# *I use python26 for gvim, default gvim come with python27 
>> mt.exe -inputresource:c:\python26\python.exe;#1 -out:python.manifest 

# manually edit gvim.manifest, just change the line with dependentAssembly with 
# line from the python.manifest which will depend on VC90.CRT 
# Then, update the edited manifest into gvim.exe 
>> mt.exe -manifest gvim.manifest -outputresource:gvim.exe;1 

Qui di seguito sono i miei gvim.manifest modificato:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> 
    <assemblyIdentity processorArchitecture="*" version="7.3.0.0" type="win32" name="Vim"></assemblyIdentity> 
    <description>Vi Improved - A Text Editor</description> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
    </dependentAssembly> 
    </dependency> 

    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 

    <asmv3:application> 
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> 
     <dpiAware>true</dpiAware> 
    </asmv3:windowsSettings> 
    </asmv3:application> 
</assembly> 
+2

Tu sei quell'uomo! Molte grazie! –

+2

+1 È ridicolo che sia arrivato a questo, ma questo ha risolto il problema. – Hubro

+0

A causa del mio ambiente, ho avuto molte difficoltà nel far sì che vim e python suonassero bene insieme. La modifica del manifest per gvim come menzionato sopra ha risolto completamente il mio problema. Non ci avrei pensato. Grazie! – Mark

4

Ho avuto lo stesso problema (Windows 7) e ho potuto risolverlo rimuovendo i percorsi dal mio variabile PATH che contengono msvcr90.dll.

Dopo aver rimosso più voci, l'errore si è interrotto. Purtroppo non ho preso nota delle voci che ho rimosso. Ma era C:\Program Files (x86)\OpenVPN\bin e molti altri tra cui Windows Live.

ho avuto il suggerimento di guardare il problema nel percorso da qui (in fondo alla pagina): https://bitbucket.org/Haroogan/vim-youcompleteme-for-windows/src

+2

Grazie per la soluzione. Nel mio caso è stato cmake che ho installato di recente :) – Maciek

+0

Grazie a @Maciek per averlo menzionato, è stato cmake anche nel mio caso. Ho semplicemente cancellato le DLL di runtime dalla sua directory poiché è stata installata sul mio sistema quindi non c'è bisogno di tenerla lì. –

+0

Grazie mille! Ho avuto msvcr90.dll nella mia directory di lavoro che mi stava causando questo problema. – randlet