繁体   English   中英

VS2012寻找64位dll而不是32位

[英]VS2012 looking for 64bit dll instead of 32bit

我在设置opengl项目时遇到问题。 我正在学习本教程 我能够在没有错误或警告的情况下构建它,但是当我执行它时,我得到0xc000007b错误。

似乎我的Win32应用程序尝试在C:\\ Windows \\ SysWOW64中加载64位freeglut.dll,因为当我从C:\\ Windows \\ SysWOW64中删除它时出现错误:程序'[3124] Project1.exe'已退出代码-1073741515(0xc0000135)'找不到依赖的dll'。

同样在输出中我可以看到:

'Project1.exe'(Win32):已加载'C:\\ Windows \\ SysWOW64 \\ ntdll.dll'。 符号已加载。
'Project1.exe'(Win32):加载'C:\\ Windows \\ SysWOW64 \\ kernel32.dll'。 符号已加载。
'Project1.exe'(Win32):已加载'C:\\ Windows \\ SysWOW64 \\ KernelBase.dll'。 符号已加载。
'Project1.exe'(Win32):加载'C:\\ Windows \\ SysWOW64 \\ opengl32.dll'。 符号已加载。
'Project1.exe'(Win32):加载'C:\\ Windows \\ SysWOW64 \\ msvcrt.dll'。 符号已加载。
'Project1.exe'(Win32):已加载'C:\\ Windows \\ SysWOW64 \\ advapi32.dll'。 符号已加载。
'Project1.exe'(Win32):加载'C:\\ Windows \\ SysWOW64 \\ sechost.dll'。 符号已加载。
'Project1.exe'(Win32):加载'C:\\ Windows \\ SysWOW64 \\ rpcrt4.dll'。 符号已加载。
'Project1.exe'(Win32):已加载'C:\\ Windows \\ SysWOW64 \\ sspicli.dll'。 符号已加载。
'Project1.exe'(Win32):加载'C:\\ Windows \\ SysWOW64 \\ cryptbase.dll'。 符号已加载。
'Project1.exe'(Win32):加载'C:\\ Windows \\ SysWOW64 \\ gdi32.dll'。 符号已加载。
'Project1.exe'(Win32):已加载'C:\\ Windows \\ SysWOW64 \\ user32.dll'。 符号已加载。
'Project1.exe'(Win32):加载'C:\\ Windows \\ SysWOW64 \\ lpk.dll'。 符号已加载。
'Project1.exe'(Win32):加载'C:\\ Windows \\ SysWOW64 \\ usp10.dll'。 符号已加载。
'Project1.exe'(Win32):加载'C:\\ Windows \\ SysWOW64 \\ glu32.dll'。 符号已加载。
'Project1.exe'(Win32):已加载'C:\\ Windows \\ SysWOW64 \\ ddraw.dll'。 符号已加载。
'Project1.exe'(Win32):已加载'C:\\ Windows \\ SysWOW64 \\ dciman32.dll'。 符号已加载。
'Project1.exe'(Win32):加载'C:\\ Windows \\ SysWOW64 \\ setupapi.dll'。 符号已加载。
'Project1.exe'(Win32):已加载'C:\\ Windows \\ SysWOW64 \\ cfgmgr32.dll'。 符号已加载。
'Project1.exe'(Win32):已加载'C:\\ Windows \\ SysWOW64 \\ oleaut32.dll'。 符号已加载。
'Project1.exe'(Win32):加载'C:\\ Windows \\ SysWOW64 \\ ole32.dll'。 符号已加载。
'Project1.exe'(Win32):已加载'C:\\ Windows \\ SysWOW64 \\ devobj.dll'。 符号已加载。
'Project1.exe'(Win32):已加载'C:\\ Windows \\ SysWOW64 \\ dwmapi.dll'。 符号已加载。

我能做什么? 谢谢

编辑:直接在visual studio 2012中粘贴32位dll \\ Projects \\ Project1 \\ Debug修复了这个问题! 为什么没有应用程序查看库的C:\\ Windows \\ System32文件夹?

SysWOW64中的东西不是64位。 这些是用于Windows上的Windows的DLL(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 Studio实际上在项目配置中有一个单独的工作目录(“Debugger | Working Directory”),它会在你按“执行”或“调试”时运行你的程序 - 这是你的freeglut DLL应该进入的目录以避免必须在每个构建配置的输出目录中放置一个副本。

当您运送软件时,将其放在与.exe相同的目录中,但是为了开发利用项目的工作目录。 在任何情况下,除非您知道自己在做什么,否则不应将DLL放入操作系统目录中。 您需要具有管理员权限才能将任何内容写入您提到的任一目录。


实际上,您链接的教程的作者需要因不正确地解释System32SysWOW64的功能而被谴责,并建议您将DLL安装到这两个位置中的任何一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM