我在建立opengl项目时遇到了问题。我正在跟踪这个教程。我可以在没有错误或警告的情况下构建它,但是当我执行它时,我会得到0xc000007b错误。
我的Win32应用程序似乎试图在C:\Windows\SysWOW64 64中加载64位freeglut.dll,因为当我从C:\Windows\SysWOW64 64中删除它时,出现了错误:程序'3124 Project1.exe‘与代码-1073741515 (0xc0000135)“找不到依赖的freeglut.dll”。
在输出中,我还可以看到:
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\ntdll.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\kernel32.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\KernelBase.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\opengl32.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\msvcrt.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\Advapi32.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\sechost.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\rpcrt4.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\sspinli.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\cryptbase.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\gdi32.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\user32.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\lpk.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\usp10.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\Glu32.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\ddra.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\dciman32.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\setuPapi.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\cfgmgr32.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\oleau32.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\ole32.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\devobj.dll‘。符号已加载。
'Project1.exe‘(Win32):加载’C:\Windows\SysWOW64 64\dwmapi.dll‘。符号已加载。
我能做什么?谢谢
编辑:直接粘贴32位dll在visual 2012\Projects\Project1 1\Debug修复问题!为什么应用程序不查看库的C:\Windows\System32 32文件夹?
发布于 2013-11-30 16:24:15
SysWOW64中的东西不是64位的。这些DLL用于Windows上的Windows (Microsoft的32位转换层).基本上,您有一个64位版本的Windows,这就是它存储32位DLL的地方。
不管你信不信,你真的把它倒在脑子里了。64位DLL驻留在64位系统的C:\Windows\System32中,尽管听起来很奇怪.微软可能完全有意使用System64,但是有那么多的软件是硬编码的,可以使用System32和Win32,所以32几乎没有意义了。
如果要将freeglut DLL放在单个中心位置,请将其放在Microsoft Visual Studio配置为从其运行项目的工作目录中。正如您所提到的,您可以将其放入Project1\Debug中,但这意味着您还必须在Project1\Release中放置一份freeglut副本,这样您的软件才能在发布版中正确运行。实际上,Visual在项目配置中有一个单独的工作目录("Debugger AC.26 working Directory"),当您按下"Execute“或"Debug”时,它将运行您的程序--这是您的freeglut DLL应该进入的目录,以避免在每个构建配置的输出目录中放置一个副本。
当您交付您的软件时,将它放在与.exe相同的目录中,但是对于开发,请利用项目的工作目录。在任何情况下,除非您知道自己在做什么,否则永远不应该将DLL放入操作系统目录。您需要管理员特权才能将任何内容写入您提到的任何目录中,这是有原因的。
事实上,您所链接的教程的作者需要受到谴责,因为他不正确地解释了System32和SysWOW64的功能,并建议您将DLL安装到这两个位置之一。
https://stackoverflow.com/questions/20302137
复制相似问题