首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VS2012寻找64位dll而不是32位

VS2012寻找64位dll而不是32位
EN

Stack Overflow用户
提问于 2013-11-30 15:45:01
回答 1查看 4.2K关注 0票数 3

我在建立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文件夹?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-30 16:24:15

SysWOW64中的东西不是64位的。这些DLL用于Windows上的Windows (Microsoft的32位转换层).基本上,您有一个64位版本的Windows,这就是它存储32位DLL的地方。

不管你信不信,你真的把它倒在脑子里了。64位DLL驻留在64位系统的C:\Windows\System32中,尽管听起来很奇怪.微软可能完全有意使用System64,但是有那么多的软件是硬编码的,可以使用System32Win32,所以32几乎没有意义了。

如果要将freeglut DLL放在单个中心位置,请将其放在Microsoft Visual Studio配置为从其运行项目的工作目录中。正如您所提到的,您可以将其放入Project1\Debug中,但这意味着您还必须在Project1\Release中放置一份freeglut副本,这样您的软件才能在发布版中正确运行。实际上,Visual在项目配置中有一个单独的工作目录("Debugger AC.26 working Directory"),当您按下"Execute“或"Debug”时,它将运行您的程序--这是您的freeglut DLL应该进入的目录,以避免在每个构建配置的输出目录中放置一个副本。

当您交付您的软件时,将它放在与.exe相同的目录中,但是对于开发,请利用项目的工作目录。在任何情况下,除非您知道自己在做什么,否则永远不应该将DLL放入操作系统目录。您需要管理员特权才能将任何内容写入您提到的任何目录中,这是有原因的。

事实上,您所链接的教程的作者需要受到谴责,因为他不正确地解释了System32SysWOW64的功能,并建议您将DLL安装到这两个位置之一。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20302137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档