【问题标题】:Error creating an OpenGL control in a wpf window on windows 7在 Windows 7 的 wpf 窗口中创建 OpenGL 控件时出错
【发布时间】:2011-01-15 18:08:22
【问题描述】:

我在 C++ 中创建了一个 OpenGL 控件,并希望在 WPF 应用程序中使用它。我已经成功地做到了这一点,它在 Vista 和 XP 机器上运行良好,但是当我在 windows 7 机器上打开我的项目时,WPF 设计窗口将不会显示。当我尝试运行程序时出现异常:

“无法创建在程序集 'LabUserInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 中定义的 'Window1' 的实例。调用的目标已抛出异常。标记文件中的错误'Window1.xaml' 第 1 行位置 9。"

'LabUserInterface' 是我的 OpenGL 东西所在的地方。我在 WPF 窗口中也有这个错误:

“程序集 'PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 中的类型 'MS.Internal.Permissions.UserInitiatedNavigationPermission' 未标记为可序列化。”

【问题讨论】:

    标签: c++ wpf opengl windows-7


    【解决方案1】:

    两种可能:

    1) UAC、路径问题、依赖路径问题、.NET 安全性或其他一些权限问题(可能以管理员身份运行)进行测试。或者确保您的程序集对所有依赖项具有可见性和正确的权限(即,如果在 bin 文件夹中或应用程序旁边,则为私有,如果在 gac 中或在应用程序空间之外,则为公共)。

    2) 另外,请确保您可以在 win7 机器上运行 OpenGL。可能是视频驱动程序或试图枚举卡上的视频配置文件的东西。更新您的视频卡驱动程序。如果使用共享的 OpenGL 版本,请确保它存在于机器上。

    我知道,当您在 .NET 中创建 C++ 控件时,安全问题是首要问题。确保您的 C++ 控件对 opengl dll(如果共享)具有可见性,并且它们位于加载路径中(如果所有其他方法都无法确保它们在私有中可见或本地,则将它们全部放在 C:\windows\system32 中程序集文件夹 (bin))。

    我们在 PVR 的图像工具包中遇到了同样的问题,结果发现一个 dll 不在依赖路径中。一个很好的检查工具是 DependencyWalker:http://dependencywalker.com/

    【讨论】:

      【解决方案2】:

      感谢 Ryan,dependency walker 帮了大忙。结果我在 WPF 项目的调试文件夹中也需要 glut32.dll,这是我在其他机器上不需要的。

      【讨论】:

      • 它似乎取决于特定的 Visual Studio 开发环境设置,Visual Studio 会在其中查找解决方案所依赖的库。
      【解决方案3】:

      我认为您的权限错误与 OpenGL 无关。也许它是在试图收集有关真正错误的信息时生成的(这将解释使用序列化程序的尝试)尝试注释掉自定义控件的所有内部,以便它简单地从基类继承,然后再试一次(好吧,你可以需要留下一些属性定义)。如果这样可以解决问题,请慢慢添加实施,直到找出导致问题的原因。

      如果仍然失败,您可能想要做的是打开一个 Visual Studio 副本并使用它来调试 Visual Studio 的第二个副本,同时在 WPF 设计器中打开您的项目。然后您可以中断异常,在调用堆栈上下查看变量,并大致解决您的问题。

      在工作和非工作的开发环境中是否有相同版本的 Visual Studio 和相同的补丁? Visual Studio 补丁比底层操作系统更容易产生这个问题。对于 OpenGL,视频驱动程序也很重要,因此请发布该信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-04
        • 2020-11-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多