我已经用 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’未标记为可序列化。”
最佳答案
两种可能性:
1) 要测试的 UAC、路径问题、依赖路径问题、.NET 安全或其他一些权限问题(可能以管理员身份运行)。或者确保您的程序集对所有依赖项和正确的权限具有可见性(即,如果在 bin 文件夹中或在应用程序旁边是私有(private)的,如果在 gac 中或在应用程序空间之外是公共(public)的)。
2) 此外,请确保您可以在 win7 机器上运行 OpenGL。可能是视频驱动程序或试图枚举卡上的视频配置文件的东西。更新您的视频卡驱动程序。如果使用共享的 OpenGL 版本,请确保它存在于机器上。
我知道当您在 .NET 中创建 C++ 控件时,安全问题是首要问题。确保您的 C++ 控件可以看到 opengl dll(如果共享)并且它们位于加载路径中(如果所有其他方法都无法确保它们可以被看到或在私有(private)中本地,则将它们全部放在 C:\windows\system32 中程序集文件夹(bin))。
我们在 PVR 的图像工具包中遇到了同样的问题,结果发现一个 dll 不在依赖路径中。 DependencyWalker 是一个很好的工具,用于检查:http://dependencywalker.com/
关于c++ - 在 Windows 7 的 wpf 窗口中创建 OpenGL 控件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2245195/