2010-05-26 11 views
7

Nous passons de VS2005 à VS2010. Nous y sommes presque, mais il y a un problème avec Crystal Reports. Nous utilisons le composant RDC (basé sur COM) dans notre application C++.CRXIR2 ne fonctionne pas avec VS2010 sur Windows 7 ni sur Vista

Sous Windows 7 ou VISTA, je n'arrive pas à faire fonctionner la visionneuse ni les commandes du concepteur. Je reçois des violations d'accès lorsque le contrôle est activé:

// from atlhost.h (line 2208) 
hr = m_spOleObject->DoVerb(OLEIVERB_INPLACEACTIVATE, NULL, spClientSite, 0, m_hWnd, &m_rcPos); 

La chose étrange est que quand je lance le même exe sur une machine XP, il semble fonctionner.

Nous utilisons essentiellement la classe de fenêtre « AtlAxWin100 » pour héberger le contrôle du rapport Crystal (« CrystalReports11.ActiveXReportViewer.1 ») . Je suis en utilisant la version SP6 de Crystal Reports afin que est la dernière version.

En outre, lorsque je compile le même code avec VS2005 et l'exécute sur Windows7 ou Vista tout fonctionne très bien.

Quelqu'un a-t-il une idée de ce qui pourrait causer le problème, ou des idées pour d'autres investigations?

Répondre

3

On dirait que cela a quelque chose à voir avec DEP.

Si nous éteignons le DEP complètement sur le système avec

bcdedit /set Nx AlwaysOff 

puis redémarrage bien sûr, le Viewer fonctionne!

Malheureusement, il s'agit d'une désactivation globale du système. Nous avons essayé d'éteindre le DEP pour notre exe avant, mais nous avons reçu un message de Windows disant que nous n'étions pas autorisés à éteindre le DEP pour notre exe ...

+1

Probablement la raison pour laquelle nous ne pouvions pas l'éteindre est que nous avons aussi le code .NET dans notre exe. Cependant, avec editbin.exe/NXCOMPAT: NO myExe.exe vous pouvez l'éteindre pour l'exe seulement! – tangens

+0

Dans Visual Studio, vous pouvez désactiver la prévention de l'exécution des données pour votre application dans Configuration Properties-> Linker-> Advanced-> Prévention de l'exécution des données (DEP) ->/NXCOMPAT: NO – TehShrike

1