Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 有没有办法在NVIDIA图形卡上的Visual Studio中运行程序调试?_Visual Studio_Debugging_Opengl_Visual Studio 2013 - Fatal编程技术网

Visual studio 有没有办法在NVIDIA图形卡上的Visual Studio中运行程序调试?

Visual studio 有没有办法在NVIDIA图形卡上的Visual Studio中运行程序调试?,visual-studio,debugging,opengl,visual-studio-2013,Visual Studio,Debugging,Opengl,Visual Studio 2013,我的笔记本电脑集成了Intel和NVIDIA图形卡,我想在NVIDIA卡上的Visual Studio 2013社区版中运行我的程序(用C#with.NET编写)调试,因为我的程序广泛使用OpenGL,Intel卡不支持最新的OpenGL功能。但默认情况下,设置程序在英特尔卡上运行 我曾尝试在NVIDIA设置中更改我的程序的默认图形卡,但似乎在程序重新编译设置重置后 那个么,在NVIDIA图形卡上运行程序还有其他简单的方法吗?可能有特殊的命令行参数或类似的东西?最简单的方法就是在程序中的某个地方

我的笔记本电脑集成了Intel和NVIDIA图形卡,我想在NVIDIA卡上的Visual Studio 2013社区版中运行我的程序(用C#with.NET编写)调试,因为我的程序广泛使用OpenGL,Intel卡不支持最新的OpenGL功能。但默认情况下,设置程序在英特尔卡上运行

我曾尝试在NVIDIA设置中更改我的程序的默认图形卡,但似乎在程序重新编译设置重置后


那个么,在NVIDIA图形卡上运行程序还有其他简单的方法吗?可能有特殊的命令行参数或类似的东西?

最简单的方法就是在程序中的某个地方添加这段代码:

extern "C" {
    _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
}

欲了解更多信息,看看这里:

最简单的方法可能是将程序编译成.NET DLL,并从用C++/CLI编写的可执行文件调用
Main
函数,该可执行文件导出
NvOptimusEnablement
变量,正如Jerem在另一个答案中提到的那样。

经过几个小时的搜索,我在


我想这比将整个项目移动到dll中并使用C++/CLI启动器要好。

我目前使用Visual Studio 2017 Professional edition,还需要使用OpenGL。正如@Omich所说,在NVIDIA设置中更改VS2017的默认图形卡不起作用。最后,我尝试右键单击“Visual Studio 2017”快捷方式(或devenv.exe,结果相同),然后选择选项“使用图形处理器运行->高性能NVIDIA procesor”,它就可以正常工作了。这种方法很简单,但是看起来很小,因为每次启动时你都要右击你的VS图标。

< P>你可以使用英伟达控制面板应用程序。我相信安装英伟达驱动程序时安装了,但我不太确定。启动它并:

选择管理三维设置->程序设置选项卡

  • 选择要自定义的程序:单击“添加”按钮 找到可执行文件并单击“添加所选程序”
  • 选择首选图形处理器。。。 选择您的NVidia处理器

  • 运行exe时,即使使用Visual Studio调试器,它也将使用选定的图形处理器。

    但我的程序是用.NET编写的,因此无法导出变量。至少没有一些编译汇编的黑客攻击。另一种解决方案可能是在英伟达控制面板中设置默认图形卡到Nvidia。但是,在.NET中导出这个变量可能有一个技巧,如何连接C++中导出的变量来实现这个变量。杰里米:我想了想,但我不确定它是否有效。你测试过了吗?我知道你的意思,但我知道有时会有一些奇怪的情况,父启动器EXE会让子EXE继承它,然后你要么一直在离散GPU上运行主机/父级,要么一直在集成GPU上运行子级是的,我测试过它。使用VisualStudio2019,我构建了一个.exe。然后打开NVidia控制面板应用程序,按照上面的说明浏览到exe。返回Visual Studio并通过调试器运行.exe。我的Windows任务栏上有一个NVidia图标,无论何时使用,它都会亮起,并列出使用该卡的程序。此新.exe的图标将亮起。即使在我修改并重建.exe之后,它仍会继续亮起。