我如何找到我的.exe的入口点功能?

0xb*_*7ed 2 c++ windows debugging 64-bit visual-studio-2012

我觉得这个问题非常愚蠢,但请在评论"这是main(),呃" 之前请耐心看看症状.

我正在使用Visual Studio Express 2012中的一个项目.我们迄今为止仅为Win32(x86)平台构建,但我将.exe构建转换为64位.我现在有一个完全链接的.exe,但是在这个过程中发生了一件有趣的事情:入口点不再被调用.

(C++,console)程序的入口点是在文件范围内声明的C++函数,具有以下签名:int main(int argc, char * argv[]).从第1天开始,这个函数在x86可执行文件中很有用.它没有在x64上调用:

  • 链接器不会抱怨它无法找到入口点.
  • 加载器不会抱怨它无法找到入口点.
  • 当我从命令行运行exe时,它会立即启动并退出,退出代码为127.
  • 例如,gdb 说"在启动程序退出时使用代码0xc000007b".
  • 在stdout或stderr上没有任何输出.
  • 如果我把有趣的事情,在main类似int * p(nullptr); *p = 5;,程序不崩溃(即使没有这个我敢肯定main()没有运行).

可能导致此问题的原因是什么?我该怎么调试呢?我不确定在我的调试器中设置断点的位置,因为我的代码都没有运行...

jla*_*ahd 6

0xc000007bSTATUS_INVALID_IMAGE_FORMAT.也就是说,操作系统甚至不会将二进制加载到足够远以开始执行它.

编译设置可能有问题.但是,通常当我看到此错误时,问题出现在尝试动态链接到32位DLL的64位应用程序中.

检查您的库,并验证您的路径指向任何DLL的64位版本.