小编A.Y*_*.N.的帖子

64位vc ++程序似乎在32位模式下运行

我在Visual Studio 2010中创建了一个64位的c ++项目(在Windows 7 64bit下);

我以为我正在运行64位应用程序,以下代码返回true:

bool is64bit = (sizeof(void*)==8);
Run Code Online (Sandbox Code Playgroud)

但如果我调用该函数IsWow64Process,它返回FALSE ...

更奇怪的事情:

  • 打电话LoadLibrary()加载一个dll c:\windows\system32\some.dll工作得很好
  • 加载一个DLL c:\windows\sysWow64\some.dll将失败(错误代码193:some.dll不是一个有效的win32应用程序)

所有这些失败都表明应用程序在32位模式下运行,但这违背了指针类型为8字节长度的事实

我很困惑,任何帮助将不胜感激!

c++ win64

10
推荐指数
1
解决办法
353
查看次数

CMAKE add_custom_command:如何使用我的原始命令

我试图通过使用ADD_CUSTOM_COMMAND向我的vc2010项目添加一些自定义构建命令.但:

[1]我发现CMAKE会自动插入比我预期更多的代码.

例如,我希望命令完全是:

"c:\Some Folder\MyTool.exe" -arg0 -arg1
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt中的相应代码如下:

add_custom_command( OUTPUT ${outfile}
                  COMMAND "c:\Some Folder\MyTool.exe" ARGS "-arg0 -arg1"
                  # COMMAND "\"c:\Some Folder\MyTool.exe\"" will FAIL to be parsed!
                  MAIN_DEPENDENCY ${infile}
                  VERBATIM)
Run Code Online (Sandbox Code Playgroud)

但实际上我得到了:

setlocal
c:\Some Folder\MyTool.exe "-arg0 -arg1"
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
Run Code Online (Sandbox Code Playgroud)

这不是我想要的.我也尝试过字符串:COMMAND "\"${MYTOOL_PATH}\" -arg0 -arg1"但是CMake只是无法解析它,因为字符串前面有一个引号.所以很糟糕我不能引用命令字符串,因为路径c:\Some Folder\MyTool.exe包含空格.

[2]我还注意到CMake会自动扩展我的依赖性修补程序.

如果我添加到命令DEPENS "$(PATH_MACRO)" …

cmake

5
推荐指数
1
解决办法
2070
查看次数

标签 统计

c++ ×1

cmake ×1

win64 ×1