草庐IT

c++ - 为 Windows x64 构建 log4cplus

我应该为Windows64位构建现有的Windows32位项目。(可能还有64位Linux)。该项目使用log4cplus库。那个目前只包含32位.lib文件,并且是我为什么讨厌在C++中使用库的光辉例子——只有一堆源文件和linuxbash脚本。INSTALL帮助文件完全是关于configurebash脚本的,它在Windows上不起作用。configure可能只是将一些参数传递给GCC,但我不知道是哪些参数。我下载了MinGW,希望我能够在项目中使用mingw32-make,它会工作,但没有发生这样的事情。那么有人有在Windows上制作这些Linux项目的经验吗?这不是我第一次解

c++ - 区分 cl.exe (Visual Studio C++) 生成的 32 位和 64 位 PE 目标文件

给定来自cl.exe的两个PE目标文件,一个32位和一个64位,我如何不借助unix实用程序区分一个和另一个,最好是在命令行(cmd.exe或powershell)?C:\>"...\VC\bin\cl.exe"-ctest.c-Fotest32.objC:\>"...\VC\bin\x86_amd64\cl.exe"-ctest.c-Fotest64.obj如果我安装msys2file实用程序可以理解它:$filetest*.objtest32.obj:Intel80386COFFobjectfile,notstripped,3sections,[...]test64.obj:dat

windows - Python 3.6,用于 64 位 Windows 上的 11g 客户端的 cx_oracle

我是Python新手。在过去的几天里,我尝试使用Anaconda3(3.6)和11gOracle客户端使cx_oracle在64位Windows8.1上运行。最后我设法使它工作,但它非常麻烦。Anaconda似乎是一个广泛使用的发行版,Windows是一个常见的操作系统,而cx_oraclewindows二进制文件来自python.org,所以下面真的可以做到吗?!?我无法使用Gholke'sunofficialwindowsbinaries因为它必须适用于11g客户端。我只找到了12c的包。我也无法使VisualC++构建工具2015(14.0)(没有足够的代表来建立链接)工作,得到

windows - 如何在 Windows 上使用 x86 perl 系统启动 x64 shell

我使用perl调用systemstart,我需要指定我希望我的程序绑定(bind)到的cpu编号。当我使用x86perl时,它会启动x86cmd来运行启动命令。此x86start不接受参数0x100000000,因为它超过32位长度。如果我使用x64perl,整个过程都很好,因为x64perl启动x64cmd,它接受0x100000000。那么在使用32位perl时如何启动x64cmd来运行start命令?详细信息:首先,我验证了32位cmdshell不接受start/affinity100000000而64位cmdshell接受。在32位cmdshell中,它抛出错误Thesyste

c++ - 如何使 StackWalk64() 在 x64 上成功运行?

我有一个C++工具可以一次遍历调用堆栈。在代码中,它首先获取实时CPU寄存器的拷贝(通过RtlCaptureContext()),然后使用一些“#ifdef...”block将特定于CPU的寄存器名称保存到stackframe.AddrPC.Offset,...AddrStack...,and...AddrFrame...;此外,对于上面的3个Addr...成员中的每一个,它都设置了stackframe.Addr....Mode=AddrModeFlat。(这是从我前一段时间遇到的一些示例代码中借用的。)使用x86二进制文件,效果很好。但是,对于x64二进制文件,StackWalk64

windows - SHGetSpecialFolderPath,如何从 32 位应用程序访问 64 位 CSIDL

有没有办法让在64位系统上运行的32位应用程序访问64位应用程序的默认文件夹?例如,在32位应用程序中将SHGetSpecialFolderPath与CSIDL_PROGRAM_FILES结合使用会返回“C:\从32位应用程序获取“C:\ProgramFiles”的方法?这里的一个相关问题没有帮助SHGetFolderPath()32bitvs64bit在调用SHGetSpecialFolderPath之前也不会抑制wow64文件系统重定向 最佳答案 回答我自己的问题,SHGetSpecialFolderPath似乎是不可能的。在V

c++ - 如何查找任意进程是否在 wow64 下运行?

我需要一个工具来发现任意进程是在机器上以x86还是x64模式运行。我需要根据进程ID从C++以编程方式执行此操作。必须有某种方法可以做到这一点(正如您可以从任务管理器中清楚地看到的那样)。有谁知道WindowsAPI会告诉您给定进程ID,应用程序是否在wow64下运行?另一种方法是根据进程ID找出正在运行的可执行文件名称/路径,并尝试从文件中读取PEheader。有没有人有可以实现这一目标的代码片段? 最佳答案 有一个WinAPI函数,IsWow64Process. 关于c++-如何查找

windows - 获取 Windows 架构(32/64 位版本)

我遇到了一个小问题:我想了解操作系统的架构,问题是我的编程语言不支持此类功能。因此,我需要从Windowsdll(如kernel32.dll)中读取此信息我确实尝试使用函数GetNativeSystemInfo/GetVersionEx/GetSystemInfo获取信息。不幸的是我无法获得架构:/在任何windowsdll中是否有一些其他的函数来读取架构?(它不需要是kernel32它可以是任何dll但它必须存在于winxp+中)作为信息:我正在使用Gupta(SQLWindows/Teamdevoloper)编辑1:typedefstruct_SYSTEM_INFO{union{D

c++ - 移至 64 位操作系统时共享内存性能降低

我遇到了在64位Windows上运行的32位旧版应用程序的问题。有问题的应用程序使用CreateFileMapping创建共享内存。当它在64位Windows上运行时,任何从另一个进程访问此共享内存的尝试都需要大约1秒。共享内存是使用页面保护标志创建的:flProtect=PAGE_READONLY|SEC_NOCACHE|SEC_COMMIT;当使用以下方法创建相同的内存时:flProtect=PAGE_READONLY|SEC_COMMIT;问题消失了。目前这种解决方法是可以接受的,但我们确实有一些设备需要设置SEC_NOCACHE标志。谁能告诉我为什么在这种情况下SEC_NOCA

windows - 64 位操作系统 (windows) 上的 32 位应用程序

我需要一些帮助来了解32位应用程序如何在64位操作系统上使用内存。一个32位应用程序可以在64位操作系统上使用2GB内存,对吗?这是否意味着并行运行的3个32位应用程序可以寻址6GB的内存...还是3个32位应用程序必须共享操作系统拥有的2-4gb的32位内存?同样,如果我有一个编译为32位的Web服务,在64位机器上的IIS下运行。只要对该web服务的单个请求始终保持在2gb内存使用量以下,重新编译到64位是否有任何意义?我的理论是,IIS为每个请求创建一个新进程,因此整个进程池将能够利用64位机器拥有的所有内存,8或15或20gig或其他。告诉我你的想法,谢谢