在本文中,我们将为您详细介绍在64位Windows上安装SetupTools的相关知识,此外,我们还会提供一些关于32位系统上安装64位Windows77048的方法、32位系统下使用Windows7
在本文中,我们将为您详细介绍在64位Windows上安装SetupTools的相关知识,此外,我们还会提供一些关于32位系统上安装64位Windows 7 7048的方法、32位系统下使用Windows 7 USB DVD Download Tool创建64位win7系统安装U盘、c – 64位Windows上的Boost.Test、CreateThread()在64位Windows上失败,在32位Windows上运行.为什么?的有用信息。
本文目录一览:- 在64位Windows上安装SetupTools
- 32位系统上安装64位Windows 7 7048的方法
- 32位系统下使用Windows 7 USB DVD Download Tool创建64位win7系统安装U盘
- c – 64位Windows上的Boost.Test
- CreateThread()在64位Windows上失败,在32位Windows上运行.为什么?
在64位Windows上安装SetupTools
我在Windows 7 64位系统上运行Python 2.7,当我运行setuptools的安装程序时,它告诉我未安装Python
2.7。具体的错误消息是:
`Python Version 2.7 required which was not found in the registry`
我安装的Python版本是:
`Python 2.7 (r27:82525, Jul 4 2010, 07:43:08) [MSC v.1500 64 bit (AMD64)] on win32`
我正在看setuptools网站,它没有提到64位Windows的任何安装程序。我错过了什么吗?还是必须从源代码安装它?
答案1
小编典典显然(在OS
X上面临相关的64位和32位问题),Windows安装程序中存在一个错误。我偶然发现了这种解决方法,它可能会有所帮助-
基本上,您可以创建自己的注册表值,HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.6\InstallPath
然后从中复制InstallPath值HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath
。有关更多详细信息,请参见下面的答案。
如果这样做,请注意setuptools 只能安装32位库 。
注意:以下回复提供了更多详细信息,因此也请阅读它们。
32位系统上安装64位Windows 7 7048的方法
32位系统上安装64位Windows 7 7048的方法
编辑:windows7 来源:Win7之家 浏览量: 105 次 2014-08-28 16:02很多朋友都在准备安装版本号为7048的Windows 7,不过这个版本暂时只能64位的系统,如果你不准备刻盘安装的话,那么需要在64位的系统中加载安装程。
其实,我们根本不需要如此麻烦,这里介绍一个非常简单的方法:
第1步:首先需要安装一款好用的虚拟光驱软件,例如免费的Daemon Tools就相当不错,至于选择什么版本可以自由决定,安装之后即可使用。(点击下载:精灵虚拟光驱(Daemon Tools)4049.1下载)
第2步:使用Daemon Tools,分别对32位和64位的Windows 7安装镜像文件进行虚拟,接下来以管理员身份进入命令提示符环境,手工输入如下命令:
f:\setup /installfrom:d:\sources\install.wim
“/installfrom”参数指向64位的install.wim,这里的“f:\setup”代表32位Windows 7,而“d:\sources\install.wim”则表示来自64位Windows 7的安装镜像(具体盘符根据个人电脑不同可能有差别,大家自行修改吧)
SRC:http://www.windows7en.com/Win7/5371.html
32位系统下使用Windows 7 USB DVD Download Tool创建64位win7系统安装U盘
在32位系统电脑上,使用Windows 7 USB DVD Download Tool创建64位win7系统安装U盘时最后会出现错误提示,导致安装U盘内引导记录没有正确写入,使用此U盘无法正常启动安装系统
具体错误信息如下:?
Files copied successfully. However, we were unable to run bootsect to make the usb device bootable. If you need assistence with bootsect, please click the "Online Help" link above for more information.
大概意思:文件复制成功。 然而,我们无法运行bootsect,使USB设备启动。 如果您需要bootsect assistence,请点击查看详细信息的“在线帮助”链接。
解决办法:提取32位Win系统安装光盘内的bootsect.exe文件(位置为光盘内\boot\bootsect.exe)复制到Windows 7 USB DVD Download Tool目录下,重新运行创建可引导的USB设备即可
32位Win7 bootsect.exe大小95K,下载地址:http://www.vdisk.cn/down/index/6387426A3810
c – 64位Windows上的Boost.Test
#include "stdafx.hpp" #define BOOST_TEST_MODULE (main) #include <boost/test/unit_test.hpp> BOOST_AUTO_TEST_CASE(morphology) { BOOST_CHECK(true); }
stdafx.hpp实际上是空的.该项目是作为一个空C项目创建的,设置为构建一个应用程序,目录设置为指向boost头和libs.我正在使用/ entry来指向Boost.Test提供的主要功能.
似乎有一些事情正在发生.首先,在构建时,链接器报告测试库中所有对象的警告,声称“.CRT部分存在;可能存在未处理的静态初始化器或终结器”:
1>msvcprtd.lib(locale0_implib.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>morphology.obj : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>libboost_unit_test_framework-vc100-mt-gd-1_49.lib(unit_test_main.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>libboost_unit_test_framework-vc100-mt-gd-1_49.lib(framework.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>libboost_unit_test_framework-vc100-mt-gd-1_49.lib(test_tools.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>libboost_unit_test_framework-vc100-mt-gd-1_49.lib(unit_test_log.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>libboost_unit_test_framework-vc100-mt-gd-1_49.lib(unit_test_suite.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>libboost_unit_test_framework-vc100-mt-gd-1_49.lib(results_reporter.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>libboost_unit_test_framework-vc100-mt-gd-1_49.lib(results_collector.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>libboost_unit_test_framework-vc100-mt-gd-1_49.lib(unit_test_parameters.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>libboost_unit_test_framework-vc100-mt-gd-1_49.lib(unit_test_monitor.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>libboost_unit_test_framework-vc100-mt-gd-1_49.lib(debug.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>libboost_unit_test_framework-vc100-mt-gd-1_49.lib(progress_monitor.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>libboost_unit_test_framework-vc100-mt-gd-1_49.lib(plain_report_formatter.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators 1>libboost_unit_test_framework-vc100-mt-gd-1_49.lib(xml_report_formatter.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators
艺术运行时,测试应用程序在Boost.Test库提供的主要调用树下的某个Boost.Test库中崩溃:
> Pentachoron.Test.exe!std::list<boost::shared_ptr<boost::runtime::cla::parameter>,std::allocator<boost::shared_ptr<boost::runtime::cla::parameter> > >::begin() Line 787 + 0x13 bytes C++ Pentachoron.Test.exe!boost::unit_test::for_each::begin<std::list<boost::shared_ptr<boost::runtime::cla::parameter>,std::allocator<boost::shared_ptr<boost::runtime::cla::parameter> > > >(const std::list<boost::shared_ptr<boost::runtime::cla::parameter>,std::allocator<boost::shared_ptr<boost::runtime::cla::parameter> > > & t,boost::mpl::bool_<1> __formal) Line 107 + 0xf bytes C++ Pentachoron.Test.exe!boost::runtime::cla::parser::operator[](boost::unit_test::basic_cstring<char const > string_id) Line 169 + 0x41 bytes C++ Pentachoron.Test.exe!boost::unit_test::runtime_config::`anonymous namespace'::retrieve_parameter<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >(boost::unit_test::basic_cstring<char const > parameter_name,const boost::runtime::cla::parser & s_cla_parser,const std::basic_string<char,std::allocator<char> > & default_value,std::allocator<char> > & optional_value) Line 216 + 0x34 bytes C++ Pentachoron.Test.exe!boost::unit_test::runtime_config::report_sink() Line 470 + 0x8b bytes C++ Pentachoron.Test.exe!boost::unit_test::results_reporter::`anonymous namespace'::results_reporter_impl::results_reporter_impl() Line 59 + 0x31 bytes C++ Pentachoron.Test.exe!boost::unit_test::results_reporter::`anonymous namespace'::s_rr_impl() Line 91 + 0x35 bytes C++ Pentachoron.Test.exe!boost::unit_test::results_reporter::get_stream() Line 120 + 0x5 bytes C++ Pentachoron.Test.exe!`boost::unit_test::unit_test_main'::`1'::catch$3() Line 207 + 0x5 bytes C++ msvcr100d.dll!_CallSettingFrame() Line 44 Asm msvcr100d.dll!__CxxCallCatchBlock(_EXCEPTION_RECORD * pExcept) Line 1337 + 0x15 bytes C++ ntdll.dll!0000000077c50c21() [Frames below may be incorrect and/or missing,no symbols loaded for ntdll.dll] Pentachoron.Test.exe!boost::unit_test::unit_test_main(boost::unit_test::test_suite * (int,char * *)* init_func,int argc,char * * argv) Line 179 C++ Pentachoron.Test.exe!main(int argc,char * * argv) Line 238 C++ kernel32.dll!000000007753652d() ntdll.dll!0000000077c2c521()
请….有人告诉我,这里只有一个我没有设置的编译器标志,或者像那样愚蠢……
解决方法
多么麻烦.
/ subsystem:console参数用于MSVC链接器.要对其进行配置,请右键单击项目,转到“链接器”|“命令行”,然后将/ subsystem:console添加到对话框底部的“其他选项”. (VS2013)
CreateThread()在64位Windows上失败,在32位Windows上运行.为什么?
我有一个不寻常的问题.我正在将一些代码从32位移植到64位. 32位代码工作得很好.但是当我为64位版本调用CreateThread()时,调用失败.我有三个失败的地方. 2调用CreateThread(). 1调用beginthreadex()调用CreateThread().
所有三个调用都失败,错误代码为0x3E6,“对内存位置的访问无效”.
问题是所有输入参数都是正确的.
HANDLE h; DWORD threadID; h = CreateThread(0,// default security 0,// default stack size myThreadFunc,// valid function to call myParam,// my param 0,// no flags,start thread immediately &threadID);
对CreateThread()的所有三次调用都是从我在程序执行开始时注入目标程序的DLL(这是在程序到达main()/ WinMain()之前)开始的.如果我通过说菜单从目标程序(相同的参数)调用CreateThread(),它就可以工作.相同的参数等奇怪.
如果我传递NULL而不是& threadID,它仍然会失败.
如果我将NULL作为myParam传递,它仍然会失败.
我不是从DllMain()内部调用CreateThread,所以这不是问题.我很困惑,在谷歌等搜索没有显示任何相关的答案.
如果有人以前见过这个或有任何想法,请告诉我.
谢谢阅读.
回答
简短回答:x64上的堆栈帧需要16字节对齐.
更长的回答:
在对调试器墙猛烈抨击并发布对各种建议的响应之后(所有这些都有所帮助,促使我尝试新方向)我开始在调用CreateThread()之前探索堆栈上的内容.事实证明这是一个红鲱鱼,但它确实导致了解决方案.
向堆栈添加额外数据会更改堆栈帧对齐.迟早,其中一个测试会使您进行16字节堆栈帧对齐.那时代码工作了.所以我回溯了我的步骤并开始将NULL数据放入堆栈而不是我认为正确的值(我一直在推送返回地址来伪造一个调用帧).它仍然有效 – 所以数据并不重要,它必须是实际的堆栈地址.
我很快意识到堆栈的16字节对齐.以前我只知道数据的8字节对齐.这microsoft document explains all the alignment requirements.
如果堆栈帧在x64上没有16字节对齐,则编译器可能会在将数据推入堆栈时将大(8字节或更多)数据放在错误的对齐边界上.
因此我面临的问题 – 使用未在16字节边界上对齐的堆栈调用挂钩代码.
对齐要求的快速摘要,表示为大小:对齐
> 1:1
> 2:2
> 4:4
> 8:8
> 10:16
> 16:16
大于8字节的任何内容在2边界的下一个幂上对齐.
我认为微软的错误代码有点误导.最初的STATUS_DATATYPE_MISALIGNMENT可以表示为STATUS_STACK_MISALIGNMENT,这将更有帮助.但随后将STATUS_DATATYPE_MISALIGNMENT转换为ERROR_NOACCESS – 这实际上掩盖并误导了问题是什么.非常无益.
感谢大家发布的建议.即使我不同意这些建议,它们也促使我在各方面进行测试(包括我不同意的方向).
写下数据类型错位问题的更详细描述:64 bit porting gotcha #1! x64 Datatype misalignment.
解决方法
好的,这个想法不是它.你确定在main / WinMain之前调用CreateThread是有效的吗?它可以解释为什么它在菜单中起作用 – 因为它在main / WinMain之后.
另外,我会三次检查myParam的生命周期. CreateThread在调用传入的函数之前很久就会返回(我从经验中知道).
发布线程例程的代码(或只是几行).
它突然发生在我身上:您确定要将64位代码注入64位进程吗?因为如果你有一个64位的CreateThread调用并尝试将其注入到在WOW64下运行的32位进程中,则可能会发生错误.
开始认真地用尽了想法.编译器是否报告任何警告?
该错误可能是由于主机程序中的错误,而不是DLL?还有一些其他代码,例如在使用__declspec(导入/导出)时加载DLL,它发生在main / WinMain之前.例如,如果该DLLMain有错误.
今天关于在64位Windows上安装SetupTools的介绍到此结束,谢谢您的阅读,有关32位系统上安装64位Windows 7 7048的方法、32位系统下使用Windows 7 USB DVD Download Tool创建64位win7系统安装U盘、c – 64位Windows上的Boost.Test、CreateThread()在64位Windows上失败,在32位Windows上运行.为什么?等更多相关知识的信息可以在本站进行查询。
本文标签: