我在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工作得很好c:\windows\sysWow64\some.dll将失败(错误代码193:some.dll不是一个有效的win32应用程序)所有这些失败都表明应用程序在32位模式下运行,但这违背了指针类型为8字节长度的事实
我很困惑,任何帮助将不胜感激!
我试图通过使用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)" …