2010-05-26 65 views
7

我們正在從VS2005升級到VS2010。 我們幾乎在那裏,但水晶報表有問題。 我們在C++應用程序中使用RDC(基於COM的)組件。CRXIR2無法在Windows 7和Vista上使用VS2010

在Windows 7或VISTA上,我無法使查看器或設計器控件工作。 我得到的訪問衝突時,控制被激活:

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

奇怪的是,當我一個XP的機器上運行相同的EXE,它似乎工作。

我們基本上使用「AtlAxWin100」窗口類來承載Crystal報表控件(「CrystalReports11.ActiveXReportViewer.1」)。 我正在使用SP6版本的Crystal報表,因此它是最新版本。另外,當我用VS2005編譯相同的代碼並在Windows7或Vista上運行它時,一切都可以正常運行。

有沒有人知道什麼可能導致問題,或想法進一步調查?

回答

3

看起來它與DEP有關。

如果我們完全關閉DEP的系統上

bcdedit /set Nx AlwaysOff 

,然後重新啓動,當然, 查看器的工作原理!

不幸的是,這是一個系統全局關閉。 我們之前試圖單獨關閉我們的exe文件的DEP,但後來我們從Windows收到一條消息,說我們不允許爲我們的exe文件關閉DEP ...

+1

也許我們無法關閉它的原因是我們在我們的exe文件中也有.NET代碼。 但與 editbin.exe/NXCOMPAT:NO myExe.exe 您可以關閉它的exe文件! – tangens 2010-05-28 12:56:26

+0

在Visual Studio中,您可以在配置屬性 - >鏈接器 - >高級 - >數據執行保護(DEP) - >/NXCOMPAT:NO中爲應用程序關閉DEP – TehShrike 2011-04-14 19:28:26

1