我已经在Windows-7-64 PC上成功开发了Visual Studio 2015中的WinAPI应用程序(使用IDE).我通常在发布模式下测试程序.
然后我对我的来源进行了一些编辑.程序编译和链接没有错误,但程序没有像我预期的那样,所以我切换到调试模式,并尝试构建和运行.再次VS编译和链接没有错误,但然后抱怨
"无法启动程序'f:\ dropbox\blah\x64\Debug\xxx.exe'.'f:\ dropbox\blah\x64\Debug\xxx.exe'不是有效的Win32应用程序".
我觉得这很奇怪,所以我回到发布模式并再次尝试 - 程序开始很好.我做了一些编辑并重建了几次,但后来VS宣布了
"无法启动程序'f:\ dropbox\blah\x64\Release\xxx.exe'.'f:\ dropbox\blah\x64\Release\xxx.exe'不是有效的Win32应用程序".
我试过干净所有,重新启动VS,甚至重新启动我的电脑..但都无济于事,我仍然得到完全相同的错误.
编辑:在阅读类似报告后,我尝试暂停Dropbox同步.它似乎工作但只有一两次然后问题又回来了.然后我尝试关闭多处理器编译,这似乎允许我的程序的发布版本再次运行.我已经编辑 - 重建 - 运行很多(50 +?)次没有问题 - 但它仍然拒绝运行调试版本.
编辑:仅供参考我的防病毒软件是Microsoft Security Essentials
编辑:调用dumpbin并传递我的(非运行的调试exe)产生以下输出:
File Type: EXECUTABLE IMAGE
Summary
1000 .00cfg
77BB8000 .data
1000 .gfids
4000 .idata
4000 .pdata
31000 .rdata
4000 .reloc
1000 .rsrc
DD000 .text
Run Code Online (Sandbox Code Playgroud)
编辑:刚尝试在不同的机器上完成编译 - 运行 - 运行(windows-10-64),它通过Dropbox链接并具有完全相同的症状,即在发布模式下运行但不在调试模式下运行.
编辑:根据Michael Burr的建议,我在我的(非工作)调试exe上运行了dependancy walker,它报告了这些错误:
然后出于好奇,我以为我会看看dep-walker对我的(工作)发布exe的说法,发现我得到完全相同的错误列表!...在更多搜索时我发现了这个问题,其中得出的结论是:"它的要点:正如其他人所说的那样,该工具现在有点陈旧,并且在新的操作系统上并不总能正常工作.因此请密切关注并且不要因错过'API-MS而误导-WIN-CORE-COM-L1-1-0.DLL',......问题可能完全在其他地方."
编辑:我从下图中左侧的选择框切换调试和释放模式,然后单击绿色三角形运行程序.

编辑:我生成了调试exe的映射文件.它太大了,不能在这里显示,但它从以下几行开始......
Timestamp is 5811bed3 (Thu Oct 27 09:46:11 2016)
Preferred load …Run Code Online (Sandbox Code Playgroud)