2010-02-11 24 views
6

Ho creato un controllo OpenGL in C++ e desidero utilizzarlo in un'applicazione WPF. Ho completato con successo questo e funziona bene su Vista e XP, ma quando apro il mio progetto su una macchina Windows 7 la finestra di progettazione WPF non verrà visualizzata. Quando provo a eseguire il programma ottengo l'eccezione:Errore durante la creazione di un controllo OpenGL in una finestra wpf su windows 7

"Impossibile creare l'istanza di 'Window1' definita nell'assembly 'LabUserInterface, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null'. È stata generata un'eccezione dalla destinazione di una chiamata Errore nel file di markup 'Window1.xaml' Linea 1 Posizione 9. "

'LabUserInterface' è dove vive la mia roba OpenGL. Anche io ho questo errore nella finestra di WPF:

"Tipo 'MS.Internal.Permissions.UserInitiatedNavigationPermission' in assemblea 'PresentationFramework, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' non è contrassegnato come serializzabile ".

risposta

-1

Non penso che il tuo errore di autorizzazione abbia qualcosa a che fare con OpenGL. Forse è generato cercando di raccogliere informazioni sull'errore reale (che spiegherebbe il tentativo di usare il serializzatore) Prova a commentare tutti gli interni del tuo controllo personalizzato in modo che erediti semplicemente dalla classe base, e riprova (ok, potresti bisogno di lasciare alcune definizioni di proprietà). Se lo corregge, aggiungi lentamente l'implementazione fino a quando non isolerai la causa del problema.

Se il problema persiste, è consigliabile aprire una copia di Visual Studio e utilizzarla per eseguire il debug di una seconda copia di Visual Studio con il progetto aperto nel designer WPF. Quindi è possibile interrompere l'eccezione, visualizzare le variabili su e giù nello stack di chiamate e in generale risolvere il problema.

Avete la stessa versione di Visual Studio e le stesse patch su ambienti di sviluppo sia che lavorano sia che non funzionano? È molto più probabile che le patch di Visual Studio producano questo problema rispetto al sistema operativo sottostante. Con OpenGL, anche il driver video potrebbe essere importante, quindi pubblica queste informazioni.

2

due possibilità:

1) UAC, problema pathing, la dipendenza problema di percorso, la sicurezza .NET o qualche altro problema di autorizzazioni (forse è meglio eseguire come amministratore) da testare. In alternativa, assicurati che l'assembly abbia visibilità su tutte le dipendenze e sulle autorizzazioni corrette (ad esempio privato se nelle cartelle bin o accanto all'app, pubblico se in gac o all'esterno dello spazio app).

2) Inoltre, assicurarsi di poter eseguire OpenGL nella casella win7. Potrebbe essere un driver video o qualcosa che tenta di enumerare i profili video sulla scheda. Aggiorna i driver della tua scheda video. Se si utilizza una versione OpenGL condivisa, assicurarsi che sia presente sulla macchina.

So che quando si esegue un controllo C++ in problemi di sicurezza .NET sono un problema principale. Assicurati che il tuo controllo C++ abbia visibilità sulle dll opengl (se condivise) e che siano nel percorso di caricamento (rilasciatele tutte in C: \ windows \ system32 se tutto il resto non è sicuro che possano essere viste o locali nel privato cartella di assemblaggio (bin)).

Abbiamo avuto lo stesso problema con un kit di strumenti di immagine per PVR e si è scoperto che una dll non si trovava nel percorso di dipendenza. Un buon strumento è DependencyWalker per il controllo: http://dependencywalker.com/

0

Grazie Ryan, il Dipendente Walker è stato di grande aiuto. Risulta che ho bisogno di glut32.dll nella cartella di debug per il progetto WPF e che è qualcosa che non ho richiesto su altre macchine.

+0

Sembra dipendere dal particolare ambiente di sviluppo dello studio visivo e dall'ambientazione in cui lo studio visivo cerca le librerie da cui dipende la soluzione. – paj777

Problemi correlati